1. sqlServer裡面的觸發器語法及其用法
通常創建觸發器以在不同表中的邏輯相關數據之間實施引用完整性或一致性。例子:
--
創建一個表(資料庫設計的部分)
Create
Table
OrderLog
(
EditDate
smalldatetime
)
--
創建觸發器,當OrderList表被UPDATE的時候,執行一段操作
CREATE
TRIGGER
tr_OrderList_Log
On
OrderList
AFTER
UPDATE
AS
Insert
Into
OrderLog(EditDate)
Values(getDate())
GO
--
修改表OrderList中的OutDate,使得觸發器被執行
Update
OrderList
Set
OutDate
=
getDate()
--
察看觸發器執行的後果
select
*
from
OrderLog
2. 如何查看sql server是否有觸發器
1、通過可視化操作來管理和查看觸發器
在Microsoft SQL Server Management Studio中,選中某一資料庫槐昌的某一張表時,在「對象資源管理器詳細」窗口中有「觸發器」項。
通過「觸發器」的右鍵菜單功能,我們可以新建觸發器。如果原來的表中已經存在了觸發器,通過雙擊「此明和觸發器」項可以查看到具體的觸發器,在此處可以執行 修改、刪除等操作。
2、通過查詢分析器來管理和查看觸發器
1)查看錶中的觸發器類型:
sp_helptrigger:返回對當前資料庫的指定表定義的 DML 觸發器的類型。sp_helptrigger 不能用於 DDL 觸發器。
示例: EXEC sp_helptrigger '表名'
2)查看觸發器的有關信息:
sp_help:報告有關資料庫對象(sys.sysobjects 兼容視圖中列出的所有對象)、用戶定義數據類型或某種數據類型的信息。
示例: EXEC sp_help '觸發器名'
3)顯示觸發器的定義:
sp_helptext:顯示規則、默認值、未加密的存儲過程、用戶定義函數、觸發器或視圖的文本。
示例: EXEC sp_helptext '觸發器名'
4)查看當前庫中所有的觸發器:
查詢腳本:SELECT * FROM Sysobjects WHERE xtype = 'TR'
5)查看當前庫中所有的森盯觸發器和與之相對應的表:
查詢腳本:SELECT tb2.name AS tableName,tb1.name AS triggerName FROM Sysobjects tb1 JOIN Sysobjects tb2 ON tb1.parent_obj=tb2.id WHERE tb1.type='TR'
3. sql如何查看錶觸發器信息:就是我想要看這個表有幾個觸發器 還有觸發器的名字 用 語句實現!!
呵呵,看到你的這個問題了,回答一下,希望能給你增加印象。
由於sqlserver
沒有oracle中的行級觸發器的概念,觸發器如下:
create
trigger
[tc2]
on
[dbo].[teacher]
for
insert,update
as
if
(select
salary
from
inserted)<3000
update
teacher
set
salary=3000
and
tid=
(select
tid
from
inserted)
說明:當你插入數據的時候,這條數據是存放在【inserted】表中的,在這個表中把【teacher】表的主鍵得到(假如是【tid】)然後把這個主鍵信息加到where
條件上,這樣就能起到只更新插入的那一條數據的效果了,否則會出現更新了全表的問題。
---
以上,希望對你有所幫助。
4. sql server知道觸發器名如何查看裡面代碼
方法步驟如下:閉閉友
1、首先打開計算機,進入計算機的對象資源管理器界面,在界面內找到如圖下的文件夾並右鍵單擊打開。
5. SQLSERVER中觸發器的觸發類型有幾種
SQL SERVER中觸發器的觸發類型有三種。
1、DML觸發器,當資料庫中表中的數據發生變化時,包括insert,update,delete任意操作,如果對該表寫了對應的DML觸發器,那麼該觸發器自動執行。
2、DDL觸發器,是Sql Server2005新增的觸發器,主要用於審核與規范對資料庫中表,觸發器,視圖等結構上的操作。比如在修改表,修改列,新增表,新增列等。它在資料庫結構發生變化時執行,主要用它來記錄數仔此梁據庫的修改過程,以及限製程序員對資料庫的修改。
3、登錄觸發器,登錄觸發器將為響應 LOGIN 事件而激發存儲過程。與 SQL Server 實例建立用戶會話時將引發此事件。登錄觸發器將在登錄的身份驗證階段完成之後且用戶會話實際建立之前激發。
(5)sqlserver查詢觸發器擴展閱讀:
DML觸發器的主要作用在於強制執行業 務規則,以及念運擴展Sql Server約束,默認值等。因為我們知道約束只能約束同一個表中的數據,而觸發器中則可以執行任意Sql命令。
來自登錄觸發器內部且通常將到達用戶的所有消息(例如錯誤消息和來自 PRINT 語句的消息)會傳送到 SQL Server 錯誤日誌。如果身份驗證失敗,將不激發登錄觸發器。
觸發器可在寫入數據表前,強制檢驗或轉換數據。觸發器發生錯誤時,異動扒拍的結果會被撤銷。可依照特定的情況,替換異動的指令 (INSTEAD OF)。
6. 使用SQLServer查詢分析器創建存儲過程和觸發器
sql server 2000 第8章及第九章課後習題答案.
7. sqlserver 觸發器 多表聯查
CREATE TRIGGER [dbo].[表1_UPDATE_表2] --這里是觸發器名稱,最好一目瞭然的
ON [dbo].[表1]
FOR UPDATE,INSERT,DELETE --更新,插入,刪除時觸發(根據實際情況,可以只用一個)
AS
BEGIN
--下面是你的語句,我沒有修改,只是調整了排版和大小寫
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 referbillid<>0
GROUP BY referbillid
) 表1 ON 表3.id=表1.id
WHERE name=1 AND refer.id IS NULL
END
8. sqlserver觸發器如何知道當前處理什麼類型的觸發
INSERT/UPDATE/DELETE行為判斷 的觸發器例子代碼
對於 FOR INSERT,UPDATE,DELETE 的
通過 查詢 inserted 與 deleted 的記錄 來判斷
CREATE TRIGGER AfterAllTest
ON test_trigger_table
FOR INSERT,UPDATE,DELETE
AS
BEGIN
PRINT('AFTER ALL');
IF EXISTS(SELECT 1 FROM inserted) AND NOT EXISTS(SELECT 1 FROM deleted)
BEGIN
PRINT('INSERTING');
END;
IF EXISTS(SELECT 1 FROM inserted) AND EXISTS(SELECT 1 FROM deleted)
BEGIN
PRINT('UPDATING');
END;
IF NOT EXISTS(SELECT 1 FROM inserted) AND EXISTS(SELECT 1 FROM deleted)
BEGIN
PRINT('DELETING');
END;
END;
go
1> INSERT INTO test_trigger_table(id, name) VALUES (1, 'ABC');
2> UPDATE test_trigger_table SET name = 'XYZ' WHERE id = 1;
3> DELETE FROM test_trigger_table WHERE id = 1;
4> go
AFTER ALL
INSERTING
(1 行受影響)
AFTER ALL
UPDATING
AFTER ALL
DELETING
1>