2010-05-22 84 views
2

在SQL Server 2008中,是否可以创建一个可插入值的列,但永远不能更新?换句话说,该列可以插入一个初始值,但一旦包含非空值,它就永远不会被更改。如果可能的话,我宁愿不使用触发器。如何创建无法更新的列?

谢谢 - 兰迪

回答

2

不能列定义为只读,但你能不通过设置权限对列实现自己的目标,因此可以插入,但不是所有相关用户/角色更新/你的数据库中的组?

编辑:

我看错了一下你的天赋,如果你需要让别人“插入”一空,那就只只读当输入一个空值,那么你可能会需要一个触发 - 要么阻止更新,要么在输入非空值后设置列的拒绝权限。

+1

+1。我没有意识到可以在每个列级授予权限。 – 2010-05-22 19:15:06

1

您必须使用触发器。

您可以在列本身上GRANT INSERT和DENY UPDATE,但这会阻止您能够在初始INSERT之后从NULL更新为某些内容。