2

一意のインデックスを追加しようとしているテーブルがあります。問題は、データを挿入するスクリプトの設定方法ですNULL。.

したがって、スクリプトを変更することは別として (誰かが私を救ってくれない限り、これは必要だと思います!)....空の文字列が一意のキーに渡された場合に値を自動的に使用できる mysql の設定はありますか?NULL

4

2 に答える 2

5

インポート スクリプトを修正できない場合は、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) の名前を変更する必要があります。

于 2012-10-24T04:02:56.413 に答える
0

のようなものを試してください

SET sn=NULLIF(sn,NULL);

また

UPDATE Table
  SET demo = CASE demo = ' ' THEN NULL ELSE demo END,
  ...
于 2012-10-24T03:29:17.237 に答える