Php 支持事务、行级锁定和外键errorno 150
我的insert声明如下:Php 支持事务、行级锁定和外键errorno 150,php,mysql,foreign-keys,Php,Mysql,Foreign Keys,我的insert声明如下: create table department ( name varchar (30) primary key ); create table PIO (id varchar (5), name varchar (30), dept_name varchar (30), email_id varchar (30), primary key ( id, name), foreign key(dept_name) references depart
create table department (
name varchar (30) primary key
);
create table PIO (id varchar (5), name varchar (30), dept_name varchar (30), email_id varchar (30),
primary key ( id, name),
foreign key(dept_name) references department (name) on delete cascade);
create table applicant (
name varchar(30), email_id varchar (30), phone varchar (15), address text
);
create table application (app_name varchar (30), app_id int, pio_id varchar (5), pio_name varchar (30), dat DATE,content text,
primary key (app_name,app_id,pio_id,pio_name),
foreign key (app_name) references applicant (name),
foreign key (pio_id) references PIO (id),
foreign key (pio_name) references PIO (name)
);
未创建最后一个(应用程序)表…它给出以下错误:
支持事务、行级锁定和外键errorno 150
PIO(id)和(名称)不是键,所以不能在应用程序中向它们声明外键。
你的意思可能是,不要让这两个FK有一个:
--in application
foreign key (pio_id,pio_name) references PIO (id,name)
这将强制pio中的每个特定(pio_id、pio_名称)对在应用程序中显示为(id、名称)对
您可能只希望(pio_id)s显示为(id)s,而(io_name)s显示为(name)s。这是两个“包含依赖”(IND)约束。FK约束是引用PK或唯一子工作的IND约束。在SQL中很难编写非FK IND约束