一意のインデックスを追加しようとしているテーブルがあります。問題は、データを挿入するスクリプトの設定方法ですNULL
。.
したがって、スクリプトを変更することは別として (誰かが私を救ってくれない限り、これは必要だと思います!)....空の文字列が一意のキーに渡された場合に値を自動的に使用できる mysql の設定はありますか?NULL
インポート スクリプトを修正できない場合は、INSERT または UPDATE がテーブルに到達する前に、トリガーを使用してパッチを適用できるはずです。このような何かがうまくいくはずです:
delimiter $$
create trigger nullify_blanks_ins before insert on your_table
for each row begin
if new.string = '' then
set new.string = null;
end if;
end;
$$
create trigger nullify_blanks_upd before update on your_table
for each row begin
if new.string = '' then
set new.string = null;
end if;
end;
$$
delimiter ;
new
ここでは、INSERT または UPDATE が完了した後に行がどのように見えるかを示しているため、ガベージ値を探して修正できます。次に、これらは BEFORE トリガーであるため、パッチを適用した行がデータベースに入ります。もちろん、状況に合わせてテーブル ( your_table
) と列 ( string
) の名前を変更する必要があります。
のようなものを試してください
SET sn=NULLIF(sn,NULL);
また
UPDATE Table
SET demo = CASE demo = ' ' THEN NULL ELSE demo END,
...