插入后的SQL列为只读,不带触发器

插入后的SQL列为只读,不带触发器,sql,sql-server,readonly,create-table,Sql,Sql Server,Readonly,Create Table,我必须创建两列(创建者、创建日期),它们位于insert readonly之后。插入后无法更改这两个字段。我知道sql触发器可以解决这个需求。但我认为这不是一个舒适的解决方案 是否有解决我在Create Table statement中遇到的“问题”的解决方案否,可能是:) 这不能用单个表完成,但可以创建另一个表并为其创建FK。有了适当的安全性(仅通过使用证书签名的存储过程插入到主表中,并拒绝对引用表进行修改,但使用同一证书创建的用户除外,例如),这将使某些人很难修改它。当然,不能阻止管理员/所

我必须创建两列(创建者、创建日期),它们位于insert readonly之后。插入后无法更改这两个字段。我知道sql触发器可以解决这个需求。但我认为这不是一个舒适的解决方案

是否有解决我在
Create Table statement
中遇到的“问题”的解决方案否,可能是:)

这不能用单个表完成,但可以创建另一个表并为其创建FK。有了适当的安全性(仅通过使用证书签名的存储过程插入到主表中,并拒绝对引用表进行修改,但使用同一证书创建的用户除外,例如),这将使某些人很难修改它。当然,不能阻止管理员/所有者用户


如果您希望我用代码扩展答案,请回答。

也许列权限对您有效

DENY UPDATE ON dbo.MyTable (Creator, CreationDate) TO SampleRole;

不,您在
Sql Server
中没有此选项。简单的
Update Trigger
适用于您。您是否可以阻止人们直接访问表并对所有活动使用存储过程?谢谢您的回答。我不“喜欢”触发器,只在没有其他解决方案时才使用它。但在这种情况下,我必须使用触发器。谢谢你的解释!也许列权限对您有效: