gpt4 book ai didi

php - MySQL - 更新记录并保持参照完整性

转载 作者:行者123 更新时间:2023-11-29 06:36:25 25 4
gpt4 key购买 nike

我在 MySQL 5.5 中工作。

我有一个这样的联系人表

创建联系人表
(
ID INTEGER NOT NULL 唯一主键 AUTO_INCREMENT,
名称 VARCHAR(255) NOT NULL,
机构 VARCHAR(255),
地址 VARCHAR(255),
电子邮件 VARCHAR(255) NOT NULL UNIQUE,
电话 VARCHAR(10)
);
和这样的库存表

创建表库存
(
ID INTEGER NOT NULL 唯一主键 AUTO_INCREMENT,
InventoryParametersID INTEGER NOT NULL UNIQUE,
ContactID 整数不为空,
LocationID INTEGER NOT NULL,
年整数,
DateUploaded TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
注释 VARCHAR(255),
外键(ContactID)引用联系人(ID)
);
在我的网络表单中,联系人上传库存。这是我想要的行为:- 当新联系人上传库存时,使用他们的新信息进行插入- 当现有联系人(由电子邮件地址确定)上传另一个库存时,更新他们的信息并保留库存表的引用完整性

我该怎么做?

这是我尝试过的:

案例

FOREIGN KEY (ContactID) REFERENCES Contacts(ID)

REPLACE INTO Contacts (`Name`, `Institution`, `Address`, `Email`, `Phone`) VALUES (?, ?, ?, ?, ?);

结果

No change

案例

FOREIGN KEY (ContactID) REFERENCES Contacts(ID)

ON UPDATE CASCADE

REPLACE INTO Contacts (`Name`, `Institution`, `Address`, `Email`, `Phone`) VALUES (?, ?, ?, ?, ?);

结果

No change

最佳答案

REPLACE 删除查找行并添加一个新行。所以你的 ON UPDATE CASCADE 不起作用。为什么不使用 INSERT ... ON DUPLICATE KEY UPDATE?

INSERT INTO Contacts (Name, Institution, Address, Email, Phone) 
VALUES (?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE
Name = VALUES(NAME),
Institution = VALUES(Institution) ...

MySQL DOC

关于php - MySQL - 更新记录并保持参照完整性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24373744/

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