国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

觸發器學習

2024-08-31 00:47:00
字體:
來源:轉載
供稿:網友

觸發器是一種特殊的存儲過程,類似于其它編程語言中的事件函數,SQL Server™ 允許為 INSERT、UPDATE、DELETE 創建觸發器,當在表(視圖)中插入、更新、刪除記錄時,觸發一個或一系列 T-SQL 語句。

1:創建觸發器
Œ觸發器可以在企業管理器里創建,也可以在表名上點右鍵->“所有任務”->“管理觸發器”來創建。
用 CREATE TRIGGER創建觸發器

CREATE TRIGGER 觸發器名稱
ON 表名
FOR INSERT、UPDATE 或 DELETE
AS
T-SQL 語句
例:
USE Northwind
CREATE TRIGGER Category_Delete
ON Categories
FOR DELETE
AS
UPDATE P SET Discontinued = 1
FROM Products AS P INNER JOIN deleted AS d
ON P.CategoryID = d.CategoryID
可以使用IF UPDATE語句IF UPDATE (<column_name>)定義一個監視指定列的數據更新的觸發器。這樣,就可以讓觸發器容易的隔離出特定列的活動。
USE Northwind
GO
CREATE TRIGGER Employee_Update
ON Employees
FOR UPDATE
AS
IF UPDATE (EmployeeID)
BEGIN
RAISERROR ('Transaction cannot be processed./
***** Employee ID number cannot be modified.', 10, 1)
ROLLBACK TRANSACTION
END
可能你需要在視圖上創建觸發器,如果你按照以上例子的方法來創建的話,可能會出現“對象無效”的錯誤。在 SQL Server™ 聯機叢書中,是沒有說觸發器不能在視圖上創建的, 并且在語法解釋中表明:在 CREATE TRIGGER 的 ON 之后可以是視圖。實際上,我們不能在視圖上創建 FOR 觸發器,而應該創建 INSTEAD OF 觸發器.每一個表或視圖只能有一個INSTEAD OF觸發器。不能在帶有WITH CHECK OPTION定義的視圖中創建INSTEAD OF觸發器。
create trigger 觸發器名
on 表名/視圖
instead of delete/update/insert
as
SQL語句
2:刪除觸發器

Œ用查詢分析器刪除
在查詢分析器中使用 drop trigger 觸發器名稱 來刪除觸發器。也可以同時刪除多個觸發器:drop trigger 觸發器名稱,觸發器名稱...

USE pubs
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'employee_insupd' AND type = 'TR')//觸發器是否存在
DROP TRIGGER employee_insupd
GO

用企業管理器刪除
在企業管理器中,在表上點右鍵->“所有任務”->“管理觸發器”,選中所要刪除的觸發器,然后點擊“刪除”。

3:重命名觸發器

Œ用查詢分析器重命名

exec sp_rename 原名稱, 新名稱

sp_rename 是 SQL Server™ 自帶的一個存儲過程,用于更改當前數據庫中用戶創建的對象的名稱,如表名、列表、索引名等。

用企業管理器重命名
在表上點右鍵->“所有任務”->“管理觸發器”,選中所要重命名的觸發器,修改觸發器語句中的觸發器名稱,點擊“確定”。

4:其他
觸發器內部語句出錯時,前面對數據更改操作將會無效。
觸發器中可以使用大多數 T-SQL 語句,但如下一些語句是不能在觸發器中使用的。

CREATE 語句,如:CREATE DATABASE、CREATE TABLE、CREATE INDEX 等。

  • ALTER 語句,如:ALTER DATABASE、ALTER TABLE、ALTER INDEX 等。
  • DROP 語句,如:DROP DATABASE、DROP TABLE、DROP INDEX 等。
  • DISK 語句,如:DISK INIT、DISK RESIZE。
  • LOAD 語句,如:LOAD DATABASE、LOAD LOG。
  • RESTORE 語句,如:RESTORE DATABASE、RESTORE LOG。
  • RECONFIGURE
  • 說明:有人說不能用 TRUNCATE TABLE 語句,其實是可以的。
 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 陆良县| 文化| 景宁| 泸州市| 周宁县| 安泽县| 开江县| 准格尔旗| 十堰市| 临沧市| 大竹县| 上饶县| 德安县| 河曲县| 工布江达县| 正镶白旗| 许昌市| 寻甸| 和政县| 孝感市| 政和县| 西乌| 登封市| 波密县| 读书| 平潭县| 宜黄县| 枞阳县| 高邮市| 砀山县| 宝应县| 唐山市| 靖远县| 岳阳市| 肥城市| 宁强县| 万年县| 吉隆县| 古交市| 康平县| 兴隆县|