新聞中心
SQLSERVER中觸發(fā)器的觸發(fā)類型有幾種?
SQL SERVER中觸發(fā)器的觸發(fā)類型有三種。
創(chuàng)新互聯(lián)建站主營大廠網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,手機APP定制開發(fā),大廠h5微信小程序搭建,大廠網(wǎng)站營銷推廣歡迎大廠等地區(qū)企業(yè)咨詢
1、DML觸發(fā)器,當(dāng)數(shù)據(jù)庫中表中的數(shù)據(jù)發(fā)生變化時,包括insert,update,delete任意操作,如果對該表寫了對應(yīng)的DML觸發(fā)器,那么該觸發(fā)器自動執(zhí)行。
2、DDL觸發(fā)器,是Sql Server2005新增的觸發(fā)器,主要用于審核與規(guī)范對數(shù)據(jù)庫中表,觸發(fā)器,視圖等結(jié)構(gòu)上的操作。比如在修改表,修改列,新增表,新增列等。它在數(shù)據(jù)庫結(jié)構(gòu)發(fā)生變化時執(zhí)行,主要用它來記錄數(shù)據(jù)庫的修改過程,以及限制程序員對數(shù)據(jù)庫的修改。
3、登錄觸發(fā)器,登錄觸發(fā)器將為響應(yīng) LOGIN 事件而激發(fā)存儲過程。與 SQL Server 實例建立用戶會話時將引發(fā)此事件。登錄觸發(fā)器將在登錄的身份驗證階段完成之后且用戶會話實際建立之前激發(fā)。
擴展資料:
DML觸發(fā)器的主要作用在于強制執(zhí)行業(yè) 務(wù)規(guī)則,以及擴展Sql Server約束,默認(rèn)值等。因為我們知道約束只能約束同一個表中的數(shù)據(jù),而觸發(fā)器中則可以執(zhí)行任意Sql命令。
來自登錄觸發(fā)器內(nèi)部且通常將到達(dá)用戶的所有消息(例如錯誤消息和來自 PRINT 語句的消息)會傳送到 SQL Server 錯誤日志。如果身份驗證失敗,將不激發(fā)登錄觸發(fā)器。
觸發(fā)器可在寫入數(shù)據(jù)表前,強制檢驗或轉(zhuǎn)換數(shù)據(jù)。觸發(fā)器發(fā)生錯誤時,異動的結(jié)果會被撤銷??梢勒仗囟ǖ那闆r,替換異動的指令 (INSTEAD OF)。
sqlserver創(chuàng)建觸發(fā)器 當(dāng)我把一個表中數(shù)據(jù)更改時另一個表中的數(shù)據(jù)也改變,兩張表的字段不相同
--創(chuàng)建多表更新觸發(fā)器(trg_class_Update)
create Trigger [dbo].[trg_class_Update]
On [dbo].[class]
after update
As
if update(cid) --變更cid時觸發(fā)
begin
update product set pcid=I.cid from product as B,deleted D, inserted as I where B.pcid=D.cid
end
go
sqlserver 觸發(fā)器 多表聯(lián)查
CREATE TRIGGER [dbo].[表1_UPDATE_表2] --這里是觸發(fā)器名稱,最好一目了然的
ON [dbo].[表1]
FOR UPDATE,INSERT,DELETE --更新,插入,刪除時觸發(fā)(根據(jù)實際情況,可以只用一個)
AS
BEGIN
--下面是你的語句,我沒有修改,只是調(diào)整了排版和大小寫
UPDATE 表2
SET name=0,age=''
FROM 表2 INNER JOIN
(
SELECT DISTINCT ABS(id) AS billid,sale_z.ele_sordercode
FROM 表3
WHERE ele_sordercode''
) 表3
ON 表2.tid=表3.id LEFT JOIN
(
SELECT MAX(id) AS id, referbillid
FROM 表1
WHERE referbillid0
GROUP BY referbillid
) 表1 ON 表3.id=表1.id
WHERE name=1 AND refer.id IS NULL
END
SQLServer里面的觸發(fā)器語法及其用法?
通常創(chuàng)建觸發(fā)器以在不同表中的邏輯相關(guān)數(shù)據(jù)之間實施引用完整性或一致性。例子:
--
創(chuàng)建一個表(數(shù)據(jù)庫設(shè)計的部分)
Create
Table
OrderLog
(
EditDate
smalldatetime
)
--
創(chuàng)建觸發(fā)器,當(dāng)OrderList表被UPDATE的時候,執(zhí)行一段操作
CREATE
TRIGGER
tr_OrderList_Log
On
OrderList
AFTER
UPDATE
AS
Insert
Into
OrderLog(EditDate)
Values(getDate())
GO
--
修改表OrderList中的OutDate,使得觸發(fā)器被執(zhí)行
Update
OrderList
Set
OutDate
=
getDate()
--
察看觸發(fā)器執(zhí)行的后果
select
*
from
OrderLog
sqlserver 觸發(fā)器怎么實現(xiàn)
SQL Server2000提供了兩種觸發(fā)器:“Instead of” 和“After” 觸發(fā)器。
一個表或視圖的每一個修改動作(Insert、Update和Delete)都可以有一個“Instead of” 觸發(fā)器,一個表的每個修改動作都可以有多個“After”觸發(fā)器。
create trigger trigger_name
on {table_name|view_name}
{After|Instead of} {insert|update|delete}
as 相應(yīng)T-SQL語句
分享文章:sqlserver表觸發(fā),sql觸發(fā)器怎么觸發(fā)
URL地址:http://fisionsoft.com.cn/article/dsggcji.html