當前位置:首頁 » 數據倉庫 » 資料庫寫一個建立觸發器的語句
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

資料庫寫一個建立觸發器的語句

發布時間: 2022-09-09 02:29:08

Ⅰ 關於一個簡單的資料庫觸發器語句。

問題補充:

那個,首先謝謝微軟專家的回答,可是我不太明白這個語句的意思。。。
-----------------
樓主不明時,可在排行榜--> roy_88留言

use Tempdb
go
create table A(設備牌號 nvarchar(10),設備名稱 nvarchar(10),原使用單位 nvarchar(10))
insert A select '01','A1','A01'
insert A select '02','A2','A02'
insert A select '03','A3','A03'

/*
設備牌號 設備名稱 原使用單位
01 A1 A01
02 A2 A02
03 A3 A03
*/
go
create table B(設備牌號 nvarchar(10),設備名稱 nvarchar(10),原使用單位 nvarchar(10))
go
create trigger tr_B on B
for insert
as
update B
set B.設備名稱=A.設備名稱,B.原使用單位=A.原使用單位
from B
inner join inserted i on B.設備牌號=i.設備牌號
inner join A on A.設備牌號=B.設備牌號

go
insert B(設備牌號) values('01')
insert B(設備牌號) values('02')

go
select * from B
--顯示結果
/*
設備牌號 設備名稱 原使用單位
01 A1 A01
02 A2 A02
*/

sql創建觸發器

創建觸發器用 CREATE TRIGGER CREATE TRIGGER 觸發器名稱 ON 表名 FOR INSERT、UPDATE 或 DELETE AS T-SQL 語句 注意:觸發器名稱是不加引號的。 例子: create trigger jcsj_1 on 表名 for insert as begin update 表名 set 授課門數=授課門數+1 where 教師ID=(select 教師 ID from inserted) end 詳見 http://tech.ddvip.com/2007-01/116783077317261.html

Ⅲ (1)使用SQL語句創建觸發器

1.create trigger insert_banji
on t_banji
after insert
as
if(tno not in (select tno from t_banji))
print '不能插入'
go
2.create trigger delete_banji
on t_banji
for delete
as
if((select count(*) from t_banji,deleted
where t_banji.tno=deleted.tno)<>0)
delete t_xs
where tno in(select tno from t_banji,deleted
where t_banji.tno=deleted.tno)
go

Ⅳ SQL如何創建一個觸發器

創建觸發器用 CREATE TRIGGER

CREATE TRIGGER 觸發器名稱
ON 表名
FOR INSERT、UPDATE 或 DELETE
AS T-SQL 語句

注意:觸發器名稱是不加引號的。

例子:
create trigger jcsj_1
on 表名
for insert
as
begin
update 表名 set 授課門數=授課門數+1 where 教師ID=(select 教師 ID from inserted)
end

詳見
http://tech.ddvip.com/2007-01/116783077317261.html
請採納答案,支持我一下。

Ⅳ 誰能幫我寫創建觸發器的語句,交作業用,謝了

在網上找到的,學這些關鍵是要理解後記住,交不交作業都是無所謂的。

SQL觸發器語法
語法 CREATE TRIGGER trigger_name ON { table | view } [ WITH ENCRYPTION ] { { { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ DELETE ] [ UPDATE ] } [ WITH APPEND ] [ NOT FOR REPLICATION ] AS [ { IF UPDATE ( column ) [ { AND | OR } UPDATE ( column ) ] [ ...n ] | IF ( COLUMNS_UPDATED ( ) updated_bitmask ) column_bitmask [ ...n ] } ] sql_statement [ ...n ] } } 參數 trigger_name 是觸發器的名稱。觸發器名稱必須符合標識符規則,並且在資料庫中必須唯一。可以選擇是否指定觸發器所有者名稱。 Table | view 是在其上執行觸發器的表或視圖,有時稱為觸發器表或觸發器視圖。可以選擇是否指定表或視圖的所有者名稱。 WITH ENCRYPTION 加密 syscomments 表中包含 CREATE TRIGGER 語句文本的條目。使用 WITH ENCRYPTION 可防止將觸發器作為 SQL Server 復制的一部分發布。 AFTER 指定觸發器只有在觸發 SQL 語句中指定的所有操作都已成功執行後才激發。所有的引用級聯操作和約束檢查也必須成功完成後,才能執行此觸發器。 如果僅指定 FOR 關鍵字,則 AFTER 是默認設置。 不能在視圖上定義 AFTER 觸發器。 INSTEAD OF 指定執行觸發器而不是執行觸發 SQL 語句,從而替代觸發語句的操作。 在表或視圖上,每個 INSERT、UPDATE 或 DELETE 語句最多可以定義一個 INSTEAD OF 觸發器。然而,可以在每個具有 INSTEAD OF 觸發器的視圖上定義視圖。 INSTEAD OF 觸發器不能在 WITH CHECK OPTION 的可更新視圖上定義。如果向指定了 WITH CHECK OPTION 選項的可更新視圖添加 INSTEAD OF 觸發器,SQL Server 將產生一個錯誤。用戶必須用 ALTER VIEW 刪除該選項後才能定義 INSTEAD OF 觸發器。 { [DELETE] [,] [INSERT] [,] [UPDATE] } 是指定在表或視圖上執行哪些數據修改語句時將激活觸發器的關鍵字。必須至少指定一個選項。在觸發器定義中允許使用以任意順序組合的這些關鍵字。如果指定的選項多於一個,需用逗號分隔這些選項。 對於 INSTEAD OF 觸發器,不允許在具有 ON DELETE 級聯操作引用關系的表上使用 DELETE 選項。同樣,也不允許在具有 ON UPDATE 級聯操作引用關系的表上使用 UPDATE 選項。 WITH APPEND 指定應該添加現有類型的其它觸發器。只有當兼容級別是 65 或更低時,才需要使用該可選子句。如果兼容級別是 70 或更高,則不必使用 WITH APPEND 子句添加現有類型的其它觸發器(這是兼容級別設置為 70 或更高的 CREATE TRIGGER 的默認行為)。有關更多信息,請參見 sp_dbcmptlevel。 WITH APPEND 不能與 INSTEAD OF 觸發器一起使用,或者,如果顯式聲明 AFTER 觸發器,也不能使用該子句。只有當出於向後兼容而指定 FOR 時(沒有 INSTEAD OF 或 AFTER),才能使用 WITH APPEND。以後的版本將不支持 WITH APPEND 和 FOR(將被解釋為 AFTER)。 NOT FOR REPLICATION 表示當復制進程更改觸發器所涉及的表時,不應執行該觸發器。 AS 是觸發器要執行的操作。 sql_statement 是觸發器的條件和操作。觸發器條件指定其它准則,以確定 DELETE、INSERT 或 UPDATE 語句是否導致執行觸發器操作。 當嘗試 DELETE、INSERT 或 UPDATE 操作時,Transact-SQL語句中指定的觸發器操作將生效。 觸發器可以包含任意數量和種類的 Transact-SQL 語句。觸發器旨在根據數據修改語句檢查或更改數據;它不應將數據返回給用戶。觸發器中的 Transact-SQL 語句常常包含控制流語言。CREATE TRIGGER 語句中使用幾個特殊的表: * deleted 和 inserted 是邏輯(概念)表。這些表在結構上類似於定義觸發器的表(也就是在其中嘗試用戶操作的表);這些表用於保存用戶操作可能更改的行的舊值或新值。例如,若要檢索 deleted 表中的所有值,請使用: SELECT * FROM deleted * 如果兼容級別等於 70,那麼在 DELETE、INSERT 或 UPDATE 觸發器中,SQL Server 將不允許引用 inserted 和 deleted 表中的 text、ntext 或 image 列。不能訪問 inserted 和 deleted 表中的 text、ntext 和 image 值。若要在 INSERT 或 UPDATE 觸發器中檢索新值,請將 inserted 表與原始更新表聯接。當兼容級別是 65 或更低時,對 inserted 或 deleted 表中允許空值的text、ntext 或 image 列,將返回空值;如果這些列不可為空,則返回零長度字元串。 當兼容級別是 80 或更高時,SQL Server 允許在表或視圖上通過 INSTEAD OF 觸發器更新 text、ntext 或 image 列。 n 是表示觸發器中可以包含多條 Transact-SQL 語句的佔位符。對於 IF UPDATE (column) 語句,可以通過重復 UPDATE (column) 子句包含多列。 IF UPDATE (column) 測試在指定的列上進行的 INSERT 或 UPDATE 操作,不能用於 DELETE 操作。可以指定多列。因為在 ON 子句中指定了表名,所以在 IF UPDATE 子句中的列名前不要包含表名。若要測試在多個列上進行的 INSERT 或 UPDATE 操作,請在第一個操作後指定單獨的 UPDATE(column) 子句。在 INSERT 操作中 IF UPDATE 將返回 TRUE 值,因為這些列插入了顯式值或隱性 (NULL) 值。 說明 IF UPDATE (column) 子句的功能等同於 IF、IF...ELSE 或 WHILE 語句,並且可以使用 BEGIN...END 語句塊。有關更多信息,請參見控制流語言。 可以在觸發器主體中的任意位置使用 UPDATE (column)。 column 是要測試 INSERT 或 UPDATE 操作的列名。該列可以是 SQL Server 支持的任何數據類型。但是,計算列不能用於該環境中。有關更多信息,請參見數據類型。 IF (COLUMNS_UPDATED()) 測試是否插入或更新了提及的列,僅用於 INSERT 或 UPDATE 觸發器中。COLUMNS_UPDATED 返回 varbinary 位模式,表示插入或更新了表中的哪些列。 COLUMNS_UPDATED 函數以從左到右的順序返回位,最左邊的為最不重要的位。最左邊的位表示表中的第一列;向右的下一位表示第二列,依此類推。如果在表上創建的觸發器包含 8 列以上,則 COLUMNS_UPDATED 返回多個位元組,最左邊的為最不重要的位元組。在 INSERT 操作中 COLUMNS_UPDATED 將對所有列返回 TRUE 值,因為這些列插入了顯式值或隱性 (NULL) 值。 可以在觸發器主體中的任意位置使用 COLUMNS_UPDATED。 bitwise_operator 是用於比較運算的位運算符。 updated_bitmask 是整型位掩碼,表示實際更新或插入的列。例如,表 t1 包含列 C1、C2、C3、C4 和 C5。假定表 t1 上有 UPDATE 觸發器,若要檢查列 C2、C3 和 C4 是否都有更新,指定值 14;若要檢查是否只有列 C2 有更新,指定值 2。 comparison_operator 是比較運算符。使用等號 (=) 檢查 updated_bitmask 中指定的所有列是否都實際進行了更新。使用大於號 (>) 檢查 updated_bitmask 中指定的任一列或某些列是否已更新。 column_bitmask 是要檢查的列的整型位掩碼,用來檢查是否已更新或插入了這些列。

Ⅵ 資料庫中創建觸發器語句

是資料庫用戶。
表示把觸發器BASAREA_UPDATE創建在citymanager用戶下。

Ⅶ 資料庫sql,創建觸發器

create trigger 觸發器名稱on 關系表

after insert as

if inserted.存取標志=1

begin
update 儲戶表 set 存款金額=存款金額+1 where 儲戶ID=inserted.儲戶ID
end

Ⅷ 用SQL語句編寫一個觸發器~

create trigger tr_studentb_inup
for insert,update
as
begin
update a
set ssex = case when b.ssex ='男' then 'A' when b.ssex ='女' then 'H' else 'O' end
from studentb a,inserted b where a.sno =b.sno
end