如何解决SQL Server防止对列进行更新数据库在插入时设置的datetime2列值
我有一个表Values
,其中有3列:
CREATE TABLE [dbo].[Values]
(
[Id] [uniqueidentifier] NOT NULL,[Value] [nvarchar](150) NOT NULL,[CreatedOnUtc] [datatime2](7) NOT NULL
)
我希望SQL Server在创建新条目时将CreatedOnUtc
的值设置为UTC-Now,并且不允许外部命令设置此值。
这可能吗?
解决方法
这是两个问题。对于第一个:
CREATE TABLE [dbo].[Values] (
[Id] [uniqueidentifier] NOT NULL,[Value] [nvarchar](150) NOT NULL,[CreatedOnUtc] [datetime2](7) NOT NULL DEFAULT SYSUTCDATETIME()
);
防止更改列的规范方法是使用触发器,以防止更新或插入值。
请注意,Values
对于表来说确实是一个坏名字,因为它是SQL关键字和SQL Server保留字。选择不需要转义的标识符。
还有其他方法。例如,您可以关闭对表的DML访问。然后创建一个没有CreatedOnUtc
的视图,只允许通过该视图进行插入和更新。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。