Microsoft SQL Server Management Studio Expressで見ると、フィールドが「読み取り専用」に設定されたテーブルを持つSQLデータベースがあります。
そのフィールド内の一部のデータを手動で変更する必要がありますが、これをオーバーライドできるように変更できるプロパティが表示されません。
これを行うには、テーブルにSQLスクリプトを作成する必要がありますか、それとも不足しているものがありますか?
Microsoft SQL Server Management Studio Expressで見ると、フィールドが「読み取り専用」に設定されたテーブルを持つSQLデータベースがあります。
そのフィールド内の一部のデータを手動で変更する必要がありますが、これをオーバーライドできるように変更できるプロパティが表示されません。
これを行うには、テーブルにSQLスクリプトを作成する必要がありますか、それとも不足しているものがありますか?
フィールドのデータ型は何ですか?ntextまたはimageデータ型であり、Management Studioがそのサイズを処理できない場合は、「入力」できない場合があります。
その場合、次のように更新する以外に選択肢がない場合があります。
UPDATE TableName SET ColumnName = 'NewValue' WHERE PrimaryKeyId = PrimaryKeyValue
このフィールドには計算値が含まれているため、このフィールドは「読み取り専用」である可能性があります。
その場合、テーブル定義の計算を変更して値を変更する必要があります。
この問題は、特定のフィールドを主キーとして設定し、それを「Is Identity」に設定すると発生します。つまり、挿入が行われるたびにフィールドが自動的にインクリメントされます...自動インクリメントかどうかを確認することをお勧めしますそうでない場合は、そのプロパティ「IsIdenitity」をfalseに変更します。
私がかつて持っていたSQLクエリでは、編集するテーブルを生成するために使用したクエリには、「サーバーオブジェクト」、特にリンクサーバー上のテーブルへの結合が含まれていました。これにより、実際にデータを変更しようとしたテーブルがリンクサーバー上になかったとしても、セルは読み取り専用としてマークされました。
私の解決策:幸いなことに、クエリを調整できたので、リンクされたテーブルでJOINを実行する必要がなく、セルを編集できました。
提案:テーブルをロックする可能性のあるリンクサーバーまたはその他の奇妙なステートメントについてクエリを確認してください。
この列の更新を防ぐためにトリガーを使用します。
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]))