有没有办法在列上存储(插入)一个永远无法更改的值?
例如:
插入数据库行“a,b,c,x,s, X ” - X * 不会 *能够改变。 (但是,如果删除整行 - 那就好了“
答案 0 :(得分:4)
您可以从不希望更改值的用户中删除该列的UPDATE特权。或者,使用更新触发器来阻止更新。
如果您想禁止任何用户的更新,则更新触发器会更容易。
答案 1 :(得分:3)
您可以在更新之前或更新(http://msdn.microsoft.com/en-us/library/ms188601.aspx)行之后编写触发器,以检查它是否会发生变化。这是更新后的示例触发器,如果列已修改,它将回滚事务。
CREATE TRIGGER tr_update on YourTable AFTER UPDATE AS
IF UPDATE(YourColumn)
BEGIN
RAISERROR ('cannot change yourColumn', 16, 1)
ROLLBACK TRAN
RETURN
END
GO
答案 2 :(得分:2)
添加更新触发器,您可以在其中检查更改:
CREATE TRIGGER YourTrigger On YourTable FOR UPDATE
AS
IF EXISTS (SELECT 1
FROM INSERTED i
INNER JOIN DELETED d ON i.PK=d.PK
WHERE i.columnX!=d.columnX
OR (i.columnX IS NULL and d.columnx IS NOT NULL)
OR (d.columnX IS NULL and i.columnx IS NOT NULL)
)
BEGIN
ROLLBACK
RAISERROR('Error, can''t change columnX',16,1)
RETURN
END
GO