我想動態地創建一個觸發器,並需要替換部分的創建語句,特別是連接完成的數據庫名稱。使用變量在sql觸發器創建
CREATE TRIGGER [dbo].[tr_UseType_update] ON [dbo].[UseType] FOR UPDATE AS
BEGIN
SET NOCOUNT ON
INSERT [dbo].[UseType]
SELECT 'Updated', i.*
FROM inserted
INNER JOIN [(SELECT DB_NAME())].[dbo].[UseType] i ON inserted.[UseTypeID] = i.[UseTypeID]
END
我試過這個,但顯然它只是使用它實際上並沒有評估SELECT DB_NAME(文字),有沒有辦法得到它來評估此值。
我正在使用sql 2005/8。我們有一個使用sqlcmd的部署工具,所以後退將是改變工具以接收可以傳遞給sqlcmd的變量,但是如果我可以減少工作量並在腳本本身執行它(會生成)方便。
您不需要DB_NAME(),因爲這將解析爲包含具有此觸發器的表UseType的同一數據庫。然後你寫入觸發器所在的同一張表。你實際想要解決的問題是什麼? – gbn
爲什麼包含數據庫名稱?不應該'dbo.UseType'給你正確的表? –
觸發器與加入數據庫的數據庫不同 –