您好我有兩個表名稱說EmpOne
和NotificationEmp1
這兩個表具有相同的結構具有相同的列名稱,我想在插入更新記錄時使用觸發器插入NotificationEmp1
表中的更新記錄到EmpOne
如何在SQL Server 2008上創建插入更新觸發器
0
A
回答
1
嗯,我沒有看到觸發器保持表的副本完全同步,並提供了非常模糊的規格,但我會給它一個鏡頭。
CREATE TRIGGER dbo.tr_EmpOne
ON dbo.EmpOne
FOR INSERT, UPDATE
AS
BEGIN
SET NOCOUNT ON;
INSERT dbo.NotificationEmp1(columns)
SELECT columns
FROM inserted AS i
WHERE NOT EXISTS
(SELECT 1 FROM deleted WHERE key_column = i.key_column);
UPDATE n
SET col1 = i.col1,
col2 = i.col2 --, etc etc
FROM dbo.NotificationEmp1 AS n
INNER JOIN inserted AS i
ON i.key_column = n.key_column
INNER JOIN deleted AS d
ON i.key_column = d.key_column;
END
GO
現在不要忘記你會需要的東西時,行從EmpOne刪除從NoticiationEmp1刪除行。此外,這裏根本沒有錯誤處理 - 作爲一個例子(並且這不會引發錯誤),考慮直接從NotificationEmp1中刪除一行並在EmpOne中稍後更新的情況,它將通過裂縫這裏...
0
在一個觸發器中,你有稱爲「已插入」和「已刪除」的邏輯(概念)表,用於保存已修改的記錄。所以你可以插入這些記錄。
CREATE TRIGGER [dbo].[Employee_Write_Audit]
ON [dbo].[EmpOne]
AFTER INSERT,DELETE,UPDATE
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- all new inserted records and updated.
Insert into NotificationEmp1 select * from Inserted
-- just the deleted ones not the updated rows that are being removed.
Insert into NotificationEmp1 select * from Deleted where EmpOneId not in (select EmpOneId from inserted)
END
相關問題
- 1. 如何爲自動更新創建觸發器與SQL Server 2008
- 2. 更新觸發器在SQL Server 2008
- 3. SQL Server 2008 R2創建觸發器
- 4. SQL Server 2008更新觸發器
- 5. 更新觸發器SQL Server 2008
- 6. 插入更新後創建觸發器
- 7. 在SQL Server 2008 R2上創建觸發器以獲取記錄更新
- 8. 創建單觸發插入/更新
- 9. 如何在sql server 2008中插入觸發器後使用
- 10. 如何在插入後爲sql server 2008製作觸發器?
- 11. 如何在SQL Server 2005中更新觸發器之前創建
- 12. 在SQL Server在每次創建表創建觸發器2008 R2
- 13. 可以在SQL Server 2008的同一張表上創建2個更新或插入觸發器嗎?
- 14. 在SQL Server表上創建觸發器
- 15. 插入,刪除和更新表上的SQL Server觸發器
- 16. MS SQL Server 2008更改觸發器中的插入行值
- 17. SQL Server:插入觸發器
- 18. sql server觸發器插入
- 19. SQL Server 2008中創建/最後更新的觸發問題
- 20. SQL Server 2008 - 在插入/更新觸發器,將值複製到另一個表?
- 21. SQL Server 2008 - 如何使用DELETE觸發器更新字段
- 22. SQL創建觸發器插入和更新表
- 23. 創建更新觸發器
- 24. SQL Server觸發器更新
- 25. 更新觸發器SQL Server
- 26. 在插入sql server後創建一個更新多個記錄的觸發器2008
- 27. Sql Server 2005 - 插入更新觸發器 - 獲取更新,插入行
- 28. SQL Server 2008更新觸發器 - 更新某些列方法
- 29. 如何在遠程SQL Server 2005/2008數據庫上創建觸發器?
- 30. 如何在SQL Server上或之前選擇創建觸發器2008
需要一些信息,比如是什麼的鑰匙表,有哪些列,是否有任何特殊的列如身份或計算列,你使用的是什麼版本的SQL Server ... –
沒有什麼很出關於你的場景的普通情況,你還沒有提供任何信息,所以你可能剛剛搜索了它。 tkerwood的答案只是您從Books OnLine(BOL)獲得的骨架。 – cjk