2017-03-06 60 views
0

我有一個沒有主鍵的表。 這超出了我的控制範圍,我無法更改它。沒有主鍵的SQL Server更新觸發器

我需要添加一個觸發器,更新更新一列。有沒有主鍵的方法?

如果需要做:

update myTable 
set someField = someValue 
where myTable.pkID = inserted.pdID 

不過,我沒有一個主鍵,所以我不知道該怎麼辦的where子句。

+3

是否有任何獨特的列或組合列? –

+0

根據更新的執行方式,可能有一種方法。你期望在更新中使用WHERE子句嗎?對WHERE子句中可能使用的列是否有限制? –

+0

有一些臨時表已創建。也許這可以做你需要的。 https://www.mssqltips.com/sqlservertip/2342/understanding-sql-server-inserted-and-deleted-tables-for-dml-triggers/ –

回答

0

你不必有一個正式的主鍵本身,而是你需要某種值組合的識別結果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 

如果你沒有一些獨特的值的組合,恐怕你會用這種方法運氣不好。