gpt4 book ai didi

mysql - 如果其他表中存在值,则限制插入/更新

转载 作者:行者123 更新时间:2023-11-30 00:47:44 25 4
gpt4 key购买 nike

我有两个这样的表:

ips(ip PRIMARY KEY, device)
users_have_ips(user, ip FOREIGN KEY REFERENCES ips)

IP 可以属于设备或用户。所以我在更新 ips.device 时必须检查 ip 不属于用户。模拟是在更新/插入 users_have_ips 时检查 IP 不属于设备。

我会尝试使用以下元代码来解决这个问题:

CREATE TRIGGER tr_ips_ip4device
BEFORE UPDATE ON ips
FOR EACH ROW
BEGIN
IF NEW.device IS NOT NULL
AND NEW.ip IN (SELECT ip FROM users_have_ips)
THEN
RESTRICT -- with message "ip already belongs to an user"
END IF;
END

CREATE TRIGGER tr_users_have_ips_freeip
BEFORE INSERT+UPDATE ON users_have_ips
FOR EACH ROW
BEGIN
IF NEW.ip IN (SELECT ip FROM ips WHERE device IS NOT NULL)
THEN
RESTRICT -- with message "ip already belongs to an device"
END IF;
END

我遇到的主要问题是 RESTRICT。如何中止更改(例如外键不正确)?另一种是触发器中的 SELECT 语句。

有更好的方法(也许没有触发器)来解决这个问题吗?

最佳答案

我认为您可能想使用 ROLLBACK 而不是 RESTRICT。

关于mysql - 如果其他表中存在值,则限制插入/更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21217139/

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