当我通过 Microsoft SQL Server Management Studio Express 查看它时,我有一个 SQL 数据库,其中有一个字段设置为“只读”的表。
我需要手动更改该字段中的一些数据,但我看不到任何可以更改的属性,这些属性可以让我覆盖它。
我是否需要在表上编写一个 sql 脚本来执行此操作,或者我是否缺少某些东西?
当我通过 Microsoft SQL Server Management Studio Express 查看它时,我有一个 SQL 数据库,其中有一个字段设置为“只读”的表。
我需要手动更改该字段中的一些数据,但我看不到任何可以更改的属性,这些属性可以让我覆盖它。
我是否需要在表上编写一个 sql 脚本来执行此操作,或者我是否缺少某些东西?
字段的数据类型是什么?如果它的 ntext 或 image 数据类型和管理工作室无法处理它的大小,您可能无法“输入”它。
在这种情况下,您可能别无选择,只能执行如下更新。
UPDATE TableName SET ColumnName = 'NewValue' WHERE PrimaryKeyId = PrimaryKeyValue
该字段很可能是“只读”的,因为它包含计算值。
如果是这种情况,您将不得不更改表定义中的计算以更改其值。
当您将特定字段设置为主键并将其设置为“Is Identity”时会出现此问题,这意味着每当插入时该字段将自动递增......所以最好检查它是否是自动递增与否.. 如果是,则将该属性“Is Idenitity”更改为 false。
使用触发器以防止此列更新:
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]))
在我曾经有过的 SQL 查询中,我用来生成要编辑的表的查询包括对“服务器对象”上的表的连接,特别是链接服务器。这将单元格标记为只读,即使我实际上要更改数据的表不在链接服务器上。
我的解决方案:幸运的是,我能够调整查询,所以我不需要使用链接表执行 JOIN,然后我可以编辑单元格。
建议:检查您的查询链接服务器或其他可能锁定您的表的奇怪语句。