如何更改设置为“只读单元”的SQL Server数据库中的字段?

时间:2009-05-06 09:57:56

标签: sql-server ssms

我有一个SQL数据库,当我通过Microsoft SQL Server Management Studio Express查看时,该数据库的表字段设置为“只读”。

我需要手动更改该字段中的某些数据,但我看不到任何可以更改的属性,我可以覆盖它。

我是否需要在表格上编写一个sql脚本才能执行此操作,或者是否存在我缺少的内容?

5 个答案:

答案 0 :(得分:7)

该字段的数据类型是什么?如果它的ntext或image数据类型和管理工作室无法处理它的大小,您可能无法“键入”它。

在这种情况下,您可能别无选择,只能执行以下更新。

UPDATE TableName SET ColumnName = 'NewValue' WHERE PrimaryKeyId = PrimaryKeyValue

答案 1 :(得分:2)

该字段很可能是“只读”,因为它包含计算值。

如果是这种情况,则必须更改表定义中的计算以更改其值。

答案 2 :(得分:1)

当您将特定字段设置为主键并将其设置为' Is Identity'是的,这意味着无论何时进行插入,该字段都会自动递增...因此,最好检查它是否为自动增量。如果是,则更改该属性' Is Idenitity'假的。

答案 3 :(得分:0)

在一次SQL查询中,我用来生成要编辑的表的查询包括对“服务器对象”(特别是链接服务器)上的表的联接。即使我实际上要更改数据的表不在链接的服务器上,这也将这些单元格标记为只读。

我的解决方案:幸运的是,我能够调整查询,因此不需要对链接表进行JOIN操作,然后可以编辑单元格。

建议:检查查询中是否存在可能锁定表的链接服务器或其他奇数语句。

答案 4 :(得分:0)

使用触发器以防止此列更新:

CREATE TRIGGER UpdateRecord ON my_table
AFTER UPDATE AS UPDATE my_table
SET [CreatedDate] = ((SELECT TOP 1 [CreatedDate] FROM Deleted d where d.[id]=[id]))