我有一个SQL数据库,当我通过Microsoft SQL Server Management Studio Express查看时,该数据库的表字段设置为“只读”。
我需要手动更改该字段中的某些数据,但我看不到任何可以更改的属性,我可以覆盖它。
我是否需要在表格上编写一个sql脚本才能执行此操作,或者是否存在我缺少的内容?
答案 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]))