当前位置:  开发笔记 > 编程语言 > 正文

如何在创建新表时添加外键?

如何解决《如何在创建新表时添加外键?》经验,为你挑选了2个好方法。

我有这两个CREATE TABLE陈述:

CREATE TABLE GUEST (
  id int(15) not null auto_increment PRIMARY KEY,
  GuestName char(25) not null
);

CREATE TABLE PAYMENT (
  id int(15) not null auto_increment
  Foreign Key(id) references GUEST(id),
  BillNr int(15) not null
);

第二个陈述中的问题是什么?它没有创建一个新表.



1> DOK..:

在回答你的问题是几乎一样的答案,这一个.

您需要在包含外键的表中指定包含主键的表的名称,以及主键字段的名称(使用"references").

这有一些代码显示如何自己创建外键,以及在CREATE TABLE中.

这是一个更简单的例子:

CREATE TABLE parent (id INT NOT NULL,
   PRIMARY KEY (id)
) ENGINE=INNODB;
CREATE TABLE child (id INT, parent_id INT,
   INDEX par_ind (parent_id),
   FOREIGN KEY (parent_id) REFERENCES parent(id)
   ON DELETE CASCADE
) ENGINE=INNODB;



2> Hapkido..:

我建议为付款表设置唯一的密钥。在另一方面,外键不应是auto_increment,因为它引用的是已经存在的键。

CREATE TABLE GUEST(
    id int(15) not null auto_increment PRIMARY KEY, 
    GuestName char(25) not null
)  ENGINE=INNODB;

CREATE TABLE PAYMENT(
    id int(15)not null auto_increment, 
    Guest_id int(15) not null, 
    INDEX G_id (Guest_id), 
    Foreign Key(Guest_id) references GUEST(id),
    BillNr int(15) not null
)  ENGINE=INNODB;

推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有