禁用默认值列上的INSERT操作 - SQL Server

时间:2011-10-27 11:24:33

标签: sql sql-server insert constraints

在Sql Server 2008中,我有一个由数据提供程序应用程序填充的表。

我想在表格中保留一个“ INSERT_DATE ”列,以便我知道插入记录的日期。

为了做到这一点,我在 INSERT_DATE 列上定义了一个默认约束,默认情况下放置GETDATE()。

但是,我不希望数据提供程序应用程序覆盖此列值。

那么,如何禁用插入 INSERT_DATE 列?

(我不能使用计算列。因为Clustered Index使用INSERT_DATE字段)

2 个答案:

答案 0 :(得分:0)

您可以使用After Insert trigger。这样,无论插入到插入行的列中,您都可以更新为当前日期/时间。

答案 1 :(得分:0)

随后更新行时,您可能不希望列更新。

最好的办法是使用trigger。如果应用程序提供了值,您可能无法抛出错误,但至少您可以通过跳过在触发器中指定的插入内容中的列来设置它。