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

发布于 2024-12-12 02:47:08 字数 316 浏览 0 评论 0原文

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

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

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

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

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

(我无法使用计算列。因为聚集索引使用 INSERT_DATE 字段)

In Sql Server 2008, I have a table that is filled by a data provider application.

I want to keep an "INSERT_DATE" column on table, so that I can know the date the record is inserted.

In order to do this, I defined a default constraint on INSERT_DATE column which puts GETDATE() by default.

However, I don't want this column value to be overwritten by data provider application.

So, how can I disable insert into INSERT_DATE column?

(I cannot use computed column. Because Clustered Index uses INSERT_DATE field)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

江南月 2024-12-19 02:47:08

您可以使用插入后触发器 。这样,无论在插入行的该列中插入什么内容,您都可以更新为当前日期/时间。

You could use an After Insert trigger. That way, whatever is inserted into that column for an inserted row you could update to the current date/time.

圈圈圆圆圈圈 2024-12-19 02:47:08

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

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

You probably don't want the column updates as well when the row is subsequently updated.

Your best bet is to use a trigger. You might not be able to throw an error if the application provides a value but at least you will be able to set it right by skipping the column in the insert you specify in your trigger.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文