LoginSignup
1
1

More than 5 years have passed since last update.

SQLだけでオートインクリメントされてないカラムにユニークな値をINSERTする

Posted at

DBレプリケーションのテストで大量のデータをINSERTする際、オートインクリメント設定されてないのにUNIQUE制約がかかっているカラムがあったのでこう解決した。

TABLE_NAME:example

column_name auto_increment info
id yes pk
code no non_unique

下記SQLをshellでループして実行させている。

examle_insert.sql
INSERT INTO example VALUES(
  null,
  (SELECT max_val FROM (SELECT max(code) + 1 AS max_val FROM example) AS tmp)
);

また、文字列を含むコードをいれなきゃいけないケースはこうやった。別に減算じゃなくてもいいと思う。

examle_insert.sql
INSERT INTO example VALUES(
  null,
  (SELECT 'E' || max_val FROM (SELECT 99999999 - max(id) AS max_val FROM example) AS tmp)
);
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1