0
我有一個沒有主鍵的表。 這超出了我的控制範圍,我無法更改它。沒有主鍵的SQL Server更新觸發器
我需要添加一個觸發器,更新更新一列。有沒有主鍵的方法?
如果需要做:
update myTable
set someField = someValue
where myTable.pkID = inserted.pdID
不過,我沒有一個主鍵,所以我不知道該怎麼辦的where子句。
我有一個沒有主鍵的表。 這超出了我的控制範圍,我無法更改它。沒有主鍵的SQL Server更新觸發器
我需要添加一個觸發器,更新更新一列。有沒有主鍵的方法?
如果需要做:
update myTable
set someField = someValue
where myTable.pkID = inserted.pdID
不過,我沒有一個主鍵,所以我不知道該怎麼辦的where子句。
你不必有一個正式的主鍵本身,而是你需要某種值組合的識別結果affected--即使是表中的每一列:
UPDATE myTable
SET someField = someValue
FROM myTable INNER JOIN inserted ON
myTable.[col1] = inserted.[col1]
AND myTable.[col2] = inserted.[col2]
AND myTable.[col3] = inserted.[col3]
--etc
如果你沒有一些獨特的值的組合,恐怕你會用這種方法運氣不好。
是否有任何獨特的列或組合列? –
根據更新的執行方式,可能有一種方法。你期望在更新中使用WHERE子句嗎?對WHERE子句中可能使用的列是否有限制? –
有一些臨時表已創建。也許這可以做你需要的。 https://www.mssqltips.com/sqlservertip/2342/understanding-sql-server-inserted-and-deleted-tables-for-dml-triggers/ –