MySQLにおいてDEFAULT値にユーザ定義変数を指定することは可能でしょうか?
以下の構造になってるテーブル郡があり、全てのテーブルにデータが幾つか入っているとします。
CREATE TABLE A (
id BIGINT(20) NOT NULL AUTO_INCREMENT,
PRIMARY KEY(id)
);
CREATE TABLE B (
id BIGINT(20) NOT NULL AUTO_INCREMENT,
a_id BIGINT(20) NOT NULL,
PRIMARY KEY(id),
FOREIGN KEY(a_id) REFERENCES A(id)
);
CREATE TABLE C (
id BIGINT(20) NOT NULL AUTO_INCREMENT,
a_id BIGINT(20) NOT NULL,
PRIMARY KEY(id),
FOREIGN KEY(a_id) REFERENCES A(id)
);
その後、テーブルCに対して
- a_idを削除したい(DROP FOREIGN KEY, DROP COLUMN)
- b_idという外部キーを追加したい。
という要件があり、以下のようなSQLを書きました。
INSERT INTO A VALUES();
SELECT @A_ID:=last_insert_id();
INSERT INTO B (b_id) VALUES(@A_ID);
SELECT @B_ID:=last_insert_id();
ALTER TABLE C ADD COLUMN b_id BIGINT(20) NOT NULL DEFAULT @B_ID,
ADD CONSTRAINT FOREIGN KEY (b_id) REFERENCES B(id);
ALTER TABLE C DROP FOREIGN KEY `c_ibfk_1`;
ALTER TABLE C DROP COLUMN a_id;
ですが、ADD COLUMN
のDEFAULT @B_ID
がシンタックスエラーになります。
このようにALTER TABLE
で外部キーを追加しつつ、NOT NULL
にしたいようなケースでは
どのようなSQLを書くべきでしょうか。
ご教示いただければ幸いでございます。
どうぞよろしくお願い致します。