MySQL Workbench 5.2 CE を使用していますが、トリガーの作成に問題があります。「id」フィールドが自動インクリメントになるようにテーブルを設定しました
TABLE
addr VARCHAR
id INT
および Java で記述されたバッチ ステートメント
String state1 = "insert ignore into TABLE(addr) values (?);"
そして、そのように設定されたトリガー
USE
DB_NAME
;
DELIMITER $$
CREATE TRIGGER `check_addr` BEFORE INSERT ON tableFOR EACH ROW
-- Edit trigger body code below this line. Do not edit lines above this one
IF ( SELECT * FROM table WHERE addr = NEW.addr ) = 0
THEN insert into table(addr) values (NEW.addr);
END IF;
これらはすべて、自動インクリメント値のギャップを回避しようとしています。多くのネットワーク関連情報を格納するためにテーブルを使用しているため、自動インクリメント フィールドの潜在的なギャップはかなり大きくなります。
トリガーの目的は、insert ステートメント (およびその後の自動インクリメント フィールドのインクリメント) を回避し、黙って中止することです。このようにして、自動インクリメント値は連続したままになります。
簡単なメモ:addr
フィールドは PK です。
ありがとう。
2013 年 12 月 4 日編集 更新として、AI フィールドを削除し、代わりに複合キーを選択しました。少し多くのディスク容量を使用しますが、他のフィールドを正規化することに賢くなったので、最終的にはうまくいきました. 助けてくれてありがとう!