1

多数のテーブルのすべての列のデフォルト値を Null に設定したいと考えています。information_schema.columns.column_default でデフォルトの制約を確認できます。実行しようとする update information_schema.columns set column_default = Null where table_name = '[table]' と、「エラー: ビューを更新できません。ヒント: 無条件の ON UPDATE DO INSTEAD ルールが必要です。」

これについて最善の方法は何ですか?

4

1 に答える 1

1

ALTER TABLE列ごとにステートメントを実行する必要があります。システム テーブルを操作して、そのようなことを決して試みないでください (正しいテーブルが見つかったとしても、INFORMATION_SCHEMA には実際のシステム テーブルへのビューのみが含まれます)。

ALTER TABLEただし、information_schema ビューのデータに基づいて、必要なすべてのステートメントを生成できます。

SELECT 'ALTER TABLE '||テーブル名||' ALTER COLUMN '||列名||' デフォルトの NULL を設定;'
FROM information_schema.columns
WHERE テーブル名 = 'foo';

出力を SQL スクリプトとして保存し、そのスクリプトを実行します (変更をコミットすることを忘れないでください)。

于 2011-03-02T17:30:59.697 に答える