MySQL工作台阻止我设置外键。我使用的是INNO-DB数据库引擎。
我有4个表,我想要链接到相同的用户id号。我将数据分解到这些表中,希望这样会更有效率,而不是打开整个数据库来处理不需要整个数据集的项目的不同部分。
但是,无论我尝试什么设置,我都不能让它接受外键。在运行SQL时,它总是给我错误。我想知道这是不是Workbench过于热心了,或者我错过了什么。
有没有教程可以说明如何做到这一点?MySQL的信息非常黯淡,并假设一切都会正常工作。或者可能有人会对快速咨询工作感兴趣,以帮助我完成这项工作?
发布于 2011-12-03 10:04:16
我已经在MySQL 5.0中让它工作了。下面是操作步骤:
执行一些设置-创建数据库和用户;授予用户权限:
mysql -h localhost -u root -p
create database foreign_demo;
create user foreign_demo identified by 'foreign_demo';
grant all on foreign_demo.* to 'foreign_demo'@'%';
grant all on foreign_demo.* to 'foreign_demo'@'localhost';现在创建两个简单的表: t1 (父表)和t2 (子表):
CREATE TABLE IF NOT EXISTS t1
(
t1_id integer not null auto_increment,
primary key(t1_id)
);
CREATE TABLE IF NOT EXISTS t2
(
t2_id integer not null auto_increment,
t1_id integer,
primary key(t1_id),
constraint fk_t1 foreign key(t2_id) references t1(t1_id) on delete cascade on update cascade
);现在,让我们在每个元素中插入一行:
INSERT INTO t1 values();
INSERT INTO t2(t1_id) SELECT last_insert_id();让我们选择刚刚插入的内容:
select * from t1;
select * from t2;您应该在每个表中看到一行;t2表将引用t1。
现在删除父记录:
delete from t1 where t1_id = 1;当您运行这些selects时,您应该在这两个表中都找不到任何行,因为删除父表会在子表中级联为delete:
select * from t1;
select * from t2;好些了吗?
https://stackoverflow.com/questions/8364875
复制相似问题