mysql创建表里主码和外码_外码必须是另一个关系的主码吗?主键主码 外键外码是同一个东西吗?...

满意答案

dcebd7a0de6265b6ccae5ead692f1eab.png

qq575137887

2014.06.09

dcebd7a0de6265b6ccae5ead692f1eab.png

采纳率:55%    等级:10

已帮助:1164人

外码必须是另一个关系的主码, 或者 有唯一约束的列。

否则创建将要失败!

-- 创建测试主表. 无主键.

CREATE TABLE test_main2 (

id INT NOT NULL,

value VARCHAR(10)

);

-- 创建测试子表.

CREATE TABLE test_sub2 (

id INT NOT NULL,

main_id INT,

value VARCHAR(10),

PRIMARY KEY(id)

);

-- 插入测试主表数据.

INSERT INTO test_main2(id, value) VALUES (1, 'ONE');

INSERT INTO test_main2(id, value) VALUES (2, 'TWO');

-- 插入测试子表数据.

INSERT INTO test_sub2(id, main_id, value) VALUES (1, 1, 'ONEONE');

INSERT INTO test_sub2(id, main_id, value) VALUES (2, 2, 'TWOTWO');

SQL> ALTER TABLE test_sub2

2 ADD CONSTRAINT main_id_cons2

3 FOREIGN KEY (main_id)

4 REFERENCES test_main2(id);

REFERENCES test_main2(id)

*

第 4 行出现错误:

ORA-02270: 此列列表的唯一或主键不匹配

默认情况下,无法创建外键

需要创建 unique 约束

SQL> ALTER TABLE test_main2

2 ADD CONSTRAINTS t_unique_id2

3 UNIQUE (id);

表已更改。

unique 约束创建完毕后,外键创建成功。

SQL> ALTER TABLE test_sub2

2 ADD CONSTRAINT main_id_cons2

3 FOREIGN KEY (main_id)

4 REFERENCES test_main2(id);

表已更改。

00分享举报

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值