Bird の解答を実際に確認してみたところ エラーが発生します。
訂正を入れております。
AIへの質問
このコードで テーブルを作成できますが もし 該当のテーブルがすでにある場合はテーブルを削除してクリエートするコードに変更してください。
use school;
create table student
(
student_rec int auto_increment primary key comment ‘内部番号’,
student_name varchar(32) comment ‘児童の名前’,
student_kakari int comment ‘係の番号’,
student_regist datetime comment ‘登録日時’,
student_update datetime comment ‘更新日時’
);
— 生徒テーブル
create table student
(
student_rec int auto_increment primary key comment ‘内部番号’,
student_name varchar(32) comment ‘児童の名前’,
student_kakari int(12) comment ‘係の番号’,
student_regist datetime comment ‘登録日時’,
student_update datetime comment ‘更新日時’
);
— 係テーブル
create table kakari
(
kakari_rec int auto_increment primary key comment ‘内部番号’,
kakari_name varchar(32) comment ‘係の名前’,
kakari_regist datetime comment ‘登録日時’,
kakari_update datetime comment ‘更新日時’
);
— 成績テーブル
create table score
(
score_rec int auto_increment primary key comment ‘内部番号’,
score_student_rec int(8) comment ‘児童番号’,
score_score int(4) comment ‘得点’,
score_year int(4) comment ‘獲得年’,
score_regist datetime comment ‘登録日時’,
score_update datetime comment ‘更新日時’
);
AIの解答
変更後のコードは以下のようになります。
SQL
use school;
-- テーブルの存在チェック この部分でエラーが出ます
--if exists (select * from information_schema.tables where table_name = 'student') then
-- テーブルの削除
-- drop table student;
--end if;
-- テーブルの存在チェックして テーブルがあればテーブルを削除
drop table if exists student;
create table student
(
student_rec int auto_increment primary key comment '内部番号',
student_name varchar(32) comment '児童の名前',
student_kakari int(12) comment '係の番号',
student_regist datetime comment '登録日時',
student_update datetime comment '更新日時'
);
-- 係テーブル エラーになります
--if exists (select * from information_schema.tables where table_name = 'kakari') then
-- テーブルの削除
--drop table kakari;
--end if;
-- テーブルの存在チェックして テーブルがあればテーブルを削除
drop table if exists kakari;
create table kakari
(
kakari_rec int auto_increment primary key comment '内部番号',
kakari_name varchar(32) comment '係の名前',
kakari_regist datetime comment '登録日時',
kakari_update datetime comment '更新日時'
);
-- 成績テーブル
--if exists (select * from information_schema.tables where table_name = 'score') then
-- テーブルの削除
--drop table score;
--end if;
-- テーブルの存在チェックして テーブルがあればテーブルを削除
drop table if exists score;
create table score
(
score_rec int auto_increment primary key comment '内部番号',
score_student_rec int(8) comment '児童番号',
score_score int(4) comment '得点',
score_year int(4) comment '獲得年',
score_regist datetime comment '登録日時',
score_update datetime comment '更新日時'
);
コードは慎重に使用してください。詳細content_copy
変更点は以下のとおりです。
- 各テーブルの作成前に、
exists
関数を使用して、そのテーブルがすでに存在するかどうかをチェックします。 - テーブルが存在する場合は、
drop table
文を使用して、そのテーブルを削除します。 - テーブルが存在しない場合、元のコードと同じようにテーブルを作成します。
具体的には、以下の処理を追加しています。
SQL
Bird の解答コードこの部分でエラーがでます。
-- このコードではエラーになります
if exists (select * from information_schema.tables where table_name = 'student') then
-- テーブルの削除
drop table student;
end if;
こちらを使用します。
-- テーブルの存在チェックして テーブルがあればテーブルを削除
drop table if exists student;
drop table if exists kakari;
drop table if exists score;
コードは慎重に使用してください。詳細content_copy
この処理は、information_schema.tables
テーブルから、table_name
が student
である行が存在するかどうかをチェックします。存在する場合は、drop table student
文を使用して、student
テーブルを削除します。
他のテーブルについても、同様の処理を追加します。
この変更により、既存のテーブルがあっても、そのテーブルを削除して、新しいテーブルを作成するようにすることができます。