A. sql觸發器 怎麼寫
delimiter $
create trigger getdate after insert on users for each row
begin
insert into date(csrq) values(date(substring(new.sfzhm,7,8)));
end
delimiter ;
B. SQL中存儲過程,觸發器,都做什麼用的啊,具體寫在什麼地方呢~
存儲過程就是 T-SQL 的批處理(可以帶入參數),就像執行SQL語句一樣執行存儲過程的名字
觸發器定義在資料庫的表上,在表中數據增、刪、改時觸發
C. sql server裡面的觸發器怎麼寫
基本語法
create trigger tri_name
on table
for insert/update/deleted
as
SQL code
例:
create trigger tri_mc(tri_mc:自定義觸發器的名稱)
on table (table:觸發的表名)
for insert (觸發類型:insert,插入數據觸發 update,更新數據觸發 delete,刪除數據觸發)
as
declare @kssj datetime (定義一個變數,做中間處理)
declare @sqbh char(40)
select @kssj = kssj,@sqbh = sqbh from inserted
(插入數據時,插入的數據在表 inserted
更新數據時,更新後的數據在表 inserted 更新前的數據在表中 deleted
刪除數據時,刪除的數據在表 deleted
不同的操作可以,取出不同的中間數據,做處理,例子中取出插入的數據)
update table2 set isks = 1,kksj = @kssj where sqbh = @sqbh
(根據中間處理做相應操作,例子的處理為,將插入的值同步更新到另一個表)
D. SQL觸發器在存放在哪個位置
表裡面就有一個子項叫觸發器,如果是存放位置,觸發器實例存在了系統資料庫 master裡面
E. SQL 觸發器怎麼寫
CREATETRIGGER[dbo].[TRG_A]
ON[dbo].[A]
AFTERUPDATE
AS
BEGIN
INSERTINTOB
(
[FILD]
,[BEFORE]
,[AFTER]
)
SELECT'DATE'
,DEL.[DATE]
,UPD.[DATE]
FROMDELETEDDEL
INNERJOININSERTEDUPD
ONDEL.ID=UPD.ID
ANDDEL.[DATE]!=UPD.[DATE];
INSERTINTOB
(
[FILD]
,[BEFORE]
,[AFTER]
)
SELECT'NAME'
,DEL.[NAME]
,UPD.[NAME]
FROMDELETEDDEL
INNERJOININSERTEDUPD
ONDEL.ID=UPD.ID
ANDDEL.[NAME]!=UPD.[NAME]
END
F. 請問sql server的觸發器怎麼寫它是放在伺服器哪塊沒用過請高手指導下
觸發器的創建語法:
Create Trigger 觸發器名稱
On Student--在Student表中創建觸發器
for Update --在修改的時候出發下面的語句 ;也可能是for insert,for delete;也就是說,觸發器有三種出發機制:插入,修改,刪除;
As --事件觸發後所要做的事情
if Update(StudentID)
begin
Update BorrowRecord
Set StudentID=i.StudentID
From BorrowRecord br , Deleted d ,Inserted i --Deleted和Inserted臨時表
Where br.StudentID=d.StudentID
end
望採納!!!
G. 請問SQL觸發器用在什麼地方 ...求解...
先說觸發器,再說好處和壞處
-------------------------------
觸發器,主要是用來同步更新數據的,雜亂枯燥的文章不給你轉了,看起來累,舉個例子吧:
假設有兩個表,tab_1 , tab_2
再假設兩個表裡都有「人員性別」這個欄位
tab_1的數據例如: 張三```男```1978`````2002
tab_2的數據例如: 張三```男```銷售科```科長
我要改tab_1中張三的性別為「女」的話,那麼tab_2的性別也該改為「女」,對吧,總不能兩張表的性別不同吧。
如果不用觸發器的話,我們就要改完tab_1,再去改tab_2,使性別都變成女
於是這里可以用到觸發器了:
原理是:當tab_1中某人的性別發生變更後,資料庫自動將tab_2的性別進行同步修改
觸發器也可以這樣應用:
1、當刪除tab_1中的某人信息時,觸發器一並刪除該人的tab_2中的數據
2、在tab_1中新插入一個人員時,觸發器在tab_2中一並新增一條該人的數據
===================================================================================
所以在你建立觸發器時,就要指定該觸發器的用途,是同步更新,還是刪除、插入,由你指定。
基本的語法規則是:
create trigger 觸發器名稱(你自己命名的) on 表 for 用途(delete|update|insert)
as
delete|update|insert語句
----------------------------------------------------------------------
例如:
create trigger tri_A on tab_1 FOR DELETE
AS
delete tab_2 from deleted where tab_2.id = deleted.id;
意思是:在tab_1表上,建立觸發器(tri_A),用於刪除該表的數據時觸發一個事務,什麼事務呢?——刪除tab_2中的該編號人員的記錄。
FOR INSERT、FOR UPDATE分別是建立用於「插入記錄」、「更新數據」的觸發器,例子里的FOR DELETE是用於觸發「刪除記錄」的。
這里還要看清楚,那個delete語句中的表,是from deleted哦,還有,where子句的tab_2.id = deleted.id,不是tab_2.id = tab_1.id哦,deleted.id是指你剛刪除的那條記錄的id(而update、insert,都用inserted.id)
===================================================================================
好處:相對於外部程序、存儲過程,觸發器可以更快更高效的維護數據
壞處:(我自己的經驗)觸發器要用的恰到好處,一個大型應用里,觸發器越少越好,觸發器會使編程時源碼的結構被迫打亂,為將來的程序修改、源碼閱讀帶來很大不便。
H. SQL觸發器在存放在哪個位置
放在需要觸發條件的表下面,例如下面的on後面跟的[dbo].[A01]就是給哪個表觸發
ALTER TRIGGER [dbo].[A01_UPDATE_A815]
ON [dbo].[A01]
AFTER UPDATE
AS
BEGIN
SELECT A0188 INTO #A0188 FROM INSERTED
IF UPDATE ("A0191") OR UPDATE ("EXT072")
I. sql server裡面的觸發器怎麼寫
仔細看看這段代碼:
Update BorrowRecord
Set br.StudentID=i.StudentID
From BorrowRecord br , Deleted d ,Inserted i
Where br.StudentID=d.StudentID
From BorrowRecord br , Deleted d ,Inserted i
表示用別名br來代替BorrowRecord ,用d來代替Deleted,用d來代替Inserted。
明白了么?
Good Luck!
J. SQL觸發器寫法
觸發器(trigger)是SQL server 提供給程序員和數據分析員來保證數據完整性的一種方法,它是與表事件相關的特殊的存儲過程,它的執行不是由程序調用,也不是手工啟動,而是由事件來觸發,比如當對一個表進行操作( insert,delete, update)時就會激活它執行。觸發器經常用於加強數據的完整性約束和業務規則等。 觸發器可以從 DBA_TRIGGERS ,USER_TRIGGERS 數據字典中查到。SQL3的觸發器是一個能由系統自動執行對資料庫修改的語句。
語法:
DELIMITER |
CREATE TRIGGER `<databaseName>`.`<triggerName>`
< [ BEFORE | AFTER ] > < [ INSERT | UPDATE | DELETE ] >
ON [dbo]<tableName> //dbo代表該表的所有者
FOR EACH ROW
BEGIN
--do something
END |
例子:
-- 插入時執行觸發器
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
create trigger [dbo].[rscOpenInsert]
on [dbo].[RSC_INFO]
for insert
as www.2cto.com
DECLARE
@v_rscID varchar(50),
@v_status int
begin
select @v_rscID=rscID,@v_status=status from inserted;
--取得當前資源信息status>4 才插入信息
if @v_status > 4
begin
insert into RSC_OPEN_SYNCHRONOUS(rscID,opStatus,opDateTime) values (@v_rscID,'insert',getDate())
end
end
--- 更新時執行觸發器
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
create trigger [dbo].[rscOpenUpdate]
on [dbo].[RSC_INFO]
for update
as
DECLARE
@v_rscID varchar(50),
@v_status int
begin www.2cto.com
select @v_rscID=rscID,@v_status=status from inserted;
--取得當前資源信息status>4 才更新信息
if @v_status > 4
begin
update RSC_OPEN_SYNCHRONOUS set opStatus = 'update', opDateTime = getDate() where rscID=@v_rscID
end
end