gpt4 book ai didi

mysql - 使用外键在 mysql 中工作

转载 作者:行者123 更新时间:2023-11-29 22:45:05 24 4
gpt4 key购买 nike

我想创建一个带有外键的mysql数据库。但是当我插入一些测试数据时,我注意到当我查看表 tblcontact 和 tbladdress 时,我的外键为空。我知道这是一个基本问题,但你能给出一些建议吗?

CREATE TABLE tblCustomers (
customerID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
vat VARCHAR(30) NOT NULL,
customerVisible varchar(1) NOT NULL DEFAULT 'T'
);


CREATE TABLE tblContact (
contactID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
email VARCHAR(100),
phone VARCHAR(100),
customerID int,
CONSTRAINT FK_customerID FOREIGN KEY (customerID) REFERENCES tblCustomers(customerID)
);

CREATE TABLE tblAddress (
addressID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
street VARCHAR(100),
houseNumber VARCHAR(15),
city VARCHAR (100),
country VARCHAR (100),
customerID int,
CONSTRAINT FK_customerIDa FOREIGN KEY (customerID) REFERENCES tblCustomers(customerID)
);

INSERT INTO tblCustomers (firstname, lastname,vat) VALUES ("John","Doe","UV45856855");
INSERT INTO tblContact (email, phone) VALUES ("0000001","Johndoe@gmail.com");
INSERT INTO tblAddress (street,housenumber,city,country) VALUES ("berkenlaan","1a","Harelbeke","Belgie");

最佳答案

您误解了外键的概念。外键是用于将两个表链接在一起的键。因此,为了将特定行与其父行相关联,您应该在以下位置输入其引用(父级的主键): child 。

它不是自动的..您必须在 tblAddresstblContact 中手动输入 tblCustomercustomerId包含依赖关系。

你没有在你的代码中这样做......这就是为什么你得到空值。 mysql 如何知道您放入 tblAddresstblContact 中的数据与特定客户相关?

如果您希望这种情况自动发生,您可以使用 LAST_INSERT_ID() 创建触发器。

示例:-

CREATE TRIGGER tblAddress_auto_insert AFTER INSERT ON `tblAddress` 
FOR EACH ROW
BEGIN
INSERT INTO tblAddress (customerID) VALUES (LAST_INSERT_ID());
END;

tblContact进行类似的操作。

HTH

关于mysql - 使用外键在 mysql 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29181369/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com