1

これが私のインプットです。私は病院のデータベースを設計しており、「患者」テーブルの患者と「部屋」テーブルの部屋の間の関係を保持するテーブルを作成しています(賢い、私は知っています) .

両方のテーブルを宣言するために使用されるステートメントは次のとおりです。

create table patient_room
(
pr_id int NOT NULL PRIMARY KEY auto_increment,
patient_id int NOT NULL,
room_id int NOT NULL,
)ENGINE = InnoDB;

create table patients
(
patient_id int  primary key not null auto_increment,
fname varchar(30),
lname varchar(30),
suffix enum('I','II','III','IV','JR','SR'),
sex enum('M','F','U','T'),
eye_color enum('BK','BR','BL','GY','GR','HZ','MN','DX','UN'),
hair_color enum('BK','BR','BN','RD','WH','SN','BD','UN'),
date_of_birth date not null,
height int unsigned not null,
weight int unsigned not null,
admitted datetime not null
) Engine = InnoDB;

これが私のalterステートメントです

alter table patient_room add foreign key (patient_id) references patient(patient_id) on delete cascade on update cascade;

私はリターンを得る:

ERROR 1005 (HY000): Can't create table 'Mthomas.#sql-3dac_5f1' (errno: 150)

を使用してテーブルを変更して外部キーを作成することができました

alter table patient_room add foreign key (room_id) references room(room_id) on delete cascade on update cascade;

エラーなし。私はすでに別のpatient_medsテーブルに外部キーとしてpatient_idを持っていますが、それが問題になる可能性があると考えています...もしそうなら?どうすれば軽減できますか?

4

1 に答える 1

2

あなたのテーブルは呼び出されpatients、ではありませんpatient。変更する必要があります

alter table patient_room add foreign key (patient_id) references patient(patient_id) on delete cascade on update cascade;

alter table patient_room add foreign key (patient_id) references patients(patient_id) on delete cascade on update cascade;
                                                                        ^
于 2012-09-24T19:21:51.147 に答える