以下の構造になってるテーブル郡があり、全てのテーブルにデータが幾つか入っているとします。

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に対して

  1. a_idを削除したい(DROP FOREIGN KEY, DROP COLUMN)
  2. 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 COLUMNDEFAULT @B_IDがシンタックスエラーになります。

このようにALTER TABLEで外部キーを追加しつつ、NOT NULLにしたいようなケースでは
どのようなSQLを書くべきでしょうか。

ご教示いただければ幸いでございます。
どうぞよろしくお願い致します。