gpt4 book ai didi

MySQL 唯一键仅在另一个键包含特定值的情况下

转载 作者:可可西里 更新时间:2023-11-01 07:49:56 25 4
gpt4 key购买 nike

我有一个包含用户元数据的表。有4个字段...

`ID`,`meta_name`,`meta_value`,`user_id`

我想在此表中存储电子邮件。当然,这些必须是唯一的。但是我也想在此表中存储其他数据,其中数据不需要是唯一的。有什么方法可以限制 'meta_value' 是唯一的,只有当 'meta_name' 等于 'email' 时?

最佳答案

通过 MySQL 的限制 - 不。

但是您可以使用插入/更新触发器来验证数据的唯一性并禁止非法操作。

这是插入触发器的草稿(你可以在这里玩:http://sqlfiddle.com/#!2/5c9e3):

DELIMITER //

CREATE TRIGGER VerifyInsert BEFORE INSERT ON YourTestTable
FOR EACH ROW
BEGIN

IF (SELECT COUNT(1) FROM YourTestTable
WHERE YourTestTable.meta_name = 'EMail' AND YourTestTable.meta_value = NEW.meta_value
AND NEW.meta_name = YourTestTable.meta_name) > 0 THEN

SIGNAL SQLSTATE '45001' SET MESSAGE_TEXT = 'VerifyInsertFailed';

END IF;


END;

//

关于MySQL 唯一键仅在另一个键包含特定值的情况下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12384910/

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