2008-11-18 32 views
0

SQL操作關鍵字有什麼作用?我可以在觸發器中使用此關鍵字,並確定觸發器是否由插入,刪除或更新調用?SQL操作關鍵字

+0

我已經發布了一個較長的問題,真正描述了什麼,我想在這裏做的事: http://stackoverflow.com/questions/299931/tracking-changes-in-a-sql-server-2005 -數據庫 – 2008-11-18 19:56:54

回答

4

ACTION保留用於ODBC函數調用。 These words do not constrain the minimum SQL grammar; however, to ensure compatibility with drivers that support the core SQL grammar, applications should avoid using these keywords.

要在某些步驟中創建觸發器,您只需指定觸發器創建過程中的哪些觸發器。你不必把所有三個像下面的例子中,你可以根據你的目標

CREATE TRIGGER TriggerName 
ON TableName 
    [FOR|AFTER|INSTEAD OF] 
    AFTER,UPDATE,DELETE 
AS 
... 

如果您需要確定這些一個稱爲觸發您應該檢查插入放置3所選擇的任意組合並刪除了如下表格。

IF EXISTS (SELECT TOP 1 * FROM Inserted) AND NOT EXISTS (SELECT TOP 1 * FROM Deleted) --INSERT 
    ... 

IF EXISTS (SELECT TOP 1 * FROM Inserted) AND EXISTS (SELECT TOP 1 * FROM Deleted) --UPDATE 
    ... 

IF NOT EXISTS (SELECT TOP 1 * FROM Inserted) AND EXISTS (SELECT TOP 1 * FROM Deleted) --DELETE 
    ... 
1

不,你不能用它。但是您可以查看Inserted and Deleted表以瞭解發生了什麼。

一個改變基本的例子會去是這樣的:

If exists (select * from inserted) and exists (select * from deleted) 
    --Update happened 
If exists (select * from inserted) 
    --Insert happened 
If exists (select * from deleted) 
    --Delete happened 
Else 
    --Nothing happened 

事實上,雖然它只是取決於你需要做什麼。在某些情況下,您最終可能會通過主鍵加入這些表格並執行各種操作。

如果您在問題中發佈更多關於您正在嘗試的內容的詳細信息,那麼提供更具體的響應會更容易。