没有主键的SQL Server更新触发器

时间:2017-03-06 18:38:09

标签: sql-server tsql database-trigger

我有一张没有主键的表。 这是我无法控制的,我无法改变它。

我需要添加一个更新一列的触发器。有没有主键的方式?

如果需要:

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

但是,我没有主键,所以我不知道怎么做where子句。

1 个答案:

答案 0 :(得分:0)

您本身不必拥有正式的主键,但您需要一些值组合来识别受影响的记录 - 即使这是表中的每一列:

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

如果你没有一些独特的价值观组合,我担心你会对这种做法感到不快。