我有一个表,它有一个由 3 列组成的复合主键,比如说 A、B、C。我想创建一个触发器,它UPDATE
会检查这三列是否不会更改。这是我到目前为止所拥有的,但它似乎不起作用:
CREATE TRIGGER TableTrigger
ON Table
AFTER INSERT, UPDATE AS
BEGIN
IF (EXISTS (SELECT * FROM inserted) AND EXISTS (SELECT * FROM deleted))
BEGIN
-- Update Operation
IF (SELECT COUNT(*) FROM inserted WHERE A IS NOT NULL OR B IS NOT NULL OR C IS NOT NULL) > 0
BEGIN
RAISERROR('Error, you cannot change Primary Key columns', 16, 1)
ROLLBACK
RETURN
END
END
我期待如果我更新表中inserted
的某些值,我不会更新为 NULL 的列的值,但事实并非如此。我在某个地方读到了我需要查看inserted
并deleted
查看这些值是否更改的地方。所以我的问题是,我可以在不使用光标的情况下检查吗?
谢谢你。