4

私はJDBCでMySqlを使用しています...以下は私のテーブル定義です

CREATE TABLE `A` (
  `id` int(255) NOT NULL AUTO_INCREMENT,
  `type` varchar(255) NOT NULL,
  `value` varchar(255) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `unq` (`type`(50),`value`(50))
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

RETURN_GENERATED_KEYS現在、IDを他のテーブルに関連付けるために、オプションを使用してそのテーブルに行をバッチ挿入するためにステートメントを使用しています。

その操作を実行する機能が必要ですが、DUPLICATE ENTRYが発生した場合(タイプと値の同じ組み合わせ)、何も起こらないようにトランザクションを続行しますが、生成されたキーを取得し、DUPLICATEENTRYが発生した場合は既存のキーを取得します。

ありがとう

4

1 に答える 1

1

IGNOREキーワードを使用

INSET IGNORE ....

で引用されているようにMysql

IGNOREキーワードを使用すると、INSERTステートメントの実行中に発生したエラーは代わりに警告として扱われます。たとえば、IGNOREがない場合、テーブル内の既存のUNIQUEインデックスまたはPRIMARY KEY値を複製する行は、重複キーエラーを引き起こし、ステートメントは中止されます。IGNOREを使用しても、行は挿入されませんが、エラーは発行されません。

代替構文

INSERT ... ON DUPLICATE KEY UPDATE

于 2012-04-06T12:48:59.293 に答える