當前位置:首頁 » 編程語言 » sqlinsert觸發器實例
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sqlinsert觸發器實例

發布時間: 2022-07-29 00:38:55

sql2000 insert 觸發器簡單的實現

CREATE TRIGGER tr_name
ON a表
FOR INSERT
AS
update t set t.scc=t2.scc from a表 t,inserted t1,b表 t2 where t.saa=t1.saa and t.sbb=t1.sbb and t1.saa=t2.saa and t1.sbb=t2.sbb

❷ 請問sql觸發器insert觸發器如何使用

DML觸發器有三類:
1, insert觸發器;
2, update觸發器;
3, delete觸發器;
觸發器的組成部分:
觸發器的聲明,指定觸發器定時,事件,表名以類型
觸發器的執行,PL/SQL塊或對過程的調用
觸發器的限制條件,通過where子句實現
類型:
應用程序觸發器,前台開發工具提供的;
資料庫觸發器,定義在資料庫內部由某種條件引發;分為:
DML觸發器;
資料庫級觸發器;
替代觸發器;
DML觸發器組件:
1,觸發器定時
2,觸發器事件
3,表名
4, 觸發器類型
5, When子句
6, 觸發器主體
可創建觸發器的對象:資料庫表,資料庫視圖,用戶模式,資料庫實例
創建DML觸發器:
Create [or replace] trigger [模式.]觸發器名
Before| after insert|delete|(update of 列名)
On 表名
[for each row]
When 條件
PL/SQL塊
For each row的意義是:在一次操作表的語句中,每操作成功一行就會觸發一次;不寫的話,表示是表級觸發器,則無論操作多少行,都只觸發一次;
When條件的出現說明了,在DML操作的時候也許一定會觸發觸發器,但是觸發器不一定會做實際的工作,比如when 後的條件不為真的時候,觸發器只是簡單地跳過了PL/SQL塊;
Insert觸發器的創建:
create or replace trigger tg_insert
before insert on student
begin
dbms_output.put_line('insert trigger is chufa le .....');
end;
執行的效果:
SQL> insert into student
2 values(202,'dongqian','f');
insert trigger is chufa le .....
update表級觸發器的例子:
create or replace trigger tg_updatestudent
after update on student
begin
dbms_output.put_line('update trigger is chufale .....');
end;
運行效果:
SQL> update student set se='f';
update trigger is chufale .....
已更新8行;
可見,表級觸發器在更新了多行的情況下,只觸發了一次;

❸ sql觸發器 insert

CREATETRIGGERtr_test
ONa表
AFTERINSERT
AS
BEGIN
UPDATEB表SETdate=DATEADD(date,1,year)WHEREID=(SELECTIDFROMINSERTED)
END

/*說明:INSERTED 在微軟SQL Server里稱為虛擬表(INSERT動作時觸發)

而在甲骨文(Oracle)里稱為內存表。--只是叫法不一樣罷了。

*/

❹ SQL Server Insert觸發器

年齡+1歲是指他們本來有年齡數據了么?如果有,那麼一條更新語句應該行,不需要觸發器。update
student
set
sage=sage+1
如果是插入數據時想把原來的年齡+1則需要觸發器
set
ansi_nulls
on
set
quoted_identifier
on
go
alter
trigger
[dbo].[add]
on
student]
after
insert
as
begin
set
nocount
on;
update
student
set
sage=sage+1
end
默認成績均為0是不需要觸發器的,你把grade欄位的默認值設為0即可。

❺ SQL server觸發器中 update insert delete 分別給寫個例子被。

INSERT:

表1(ID,NAME)
表2(ID,NAME)
當用戶插入表1數據後,表2也被插入相同的數據
CREATETRIGGERTRI1
ON表1
FORINSERT
AS
BEGIN
INSERTINTO表2SELECT*FROMINSERTED
END
GO

DELETE:

表1(ID,NAME)
表2(ID,AGE,GENDER)
當用戶刪除表1某條ID的數據後,表2相應ID的數據也被刪除
CREATETRIGGERTRI2
ON表1
FORDELETE
AS
BEGIN
DECLARE@idINT
SELECT@idFROMDELETED
DELETE表2
WHEREID=@id
END
GO

UPDATE:

表1(ID,NAME)
表2(ID,NAME)
當用戶更改表1NAME列數據後,表2相應ID的數據也同時更新
CREATETRIGGERTRI3
ON表1
FORUPDATE
AS
IFUPDATE(NAME)
BEGIN
UPDATE表2
SETA.NAME=B.NAME
FROM表2A,INSERTEDB
WHEREA.ID=B.ID
END
GO

❻ SQL語句創建INSERT觸發器

create trigger TriggerName on TableName
after upate,insert, delete
as
begin

....................................
end

❼ SQL中如何用語句來創建一個觸發器舉一個簡單的例子

一個DML觸發器的的例子
CREATE TRIGGER TR_DML
BEFORE
DELETE OR INSERT OR UPDATE
ON table_name
--其他操作
end TR_DML;
意思是在刪除或插入或更新table_name這張表之前執行其他操作

❽ SQL的Insert觸發器實現

--我是在SQL2005下寫的 2005一下版本可能會有問題 請參考

--表1
IF OBJECT_ID('tbl_qxt') IS NOT NULL
begin
DROP TABLE tbl_qxt
end
GO
CREATE TABLE tbl_qxt
(ID int identity(1,1),CREATORID int,INSERTIME datetime,[COUNT] varchar(500))

--表2
if object_id('tbl_user') is not null
begin
drop table tbl_user
end
go
create table tbl_user
(ID int identity(1,1),CREATORID int,USERNAME varchar(50),[PASSWORD] varchar(50))

--給表1加觸發器
if object_id('trigger1') is not null
begin
drop trigger trigger1
end
go
create trigger trigger1 on tbl_qxt after insert
as
begin
if exists(select 1 from tbl_user u inner join inserted i on u.CREATORID=i.CREATORID)
begin
print 1
update tbl_qxt set [COUNT]=cast(i.[COUNT] as varchar) +'【'+cast(u.USERNAME as varchar)+'】'
from inserted i inner join tbl_user u
on u.CREATORID=i.CREATORID
where tbl_qxt.ID in(select max(id) from tbl_qxt)
end
end

go
delete from tbl_user
--先往表2裡面先插入4條記錄
insert into tbl_user(CREATORID,USERNAME,[PASSWORD])
values(1,'admin','admin')
insert into tbl_user(CREATORID,USERNAME,[PASSWORD])
values(2,'test','test')
insert into tbl_user(CREATORID,USERNAME,[PASSWORD])
values(3,'sys','sys')
insert into tbl_user(CREATORID,USERNAME,[PASSWORD])
values(4,'QXT','QXT')
go
delete from tbl_qxt
--測試觸發器,往表1中插入數據
insert into tbl_qxt(CREATORID,INSERTIME,[COUNT])
values(1,getdate(),'AAAABBB')
insert into tbl_qxt(CREATORID,INSERTIME,[COUNT])
values(2,getdate(),'BBBBCCC')
insert into tbl_qxt(CREATORID,INSERTIME,[COUNT])
values(3,getdate(),'DDDDEEE')
insert into tbl_qxt(CREATORID,INSERTIME,[COUNT])
values(4,getdate(),'FFFFGGG')

--查看結果
select * from tbl_qxt

--觸發器中間那個print 1可以去掉 那是我測試的時候用的

❾ SQL server 觸發器 insert

insert 觸發器是一個事務處理,你最後都給ROLLBACK,那麼那條insert同樣被rollback,即觸發器所在表,必須寫入數據