mysql 如何强制新条目只能在其列值之一存在于另一个表中时才能添加到表中

jq6vz3qz  于 2023-01-01  发布在  Mysql
关注(0)|答案(2)|浏览(101)

我有两张table。

  • 答:ID、电子邮件、...(电子邮件可以重复)
  • b:id,email,...(email是唯一的)

我想只允许在A中已存在该电子邮件的B中添加新条目。
有没有什么方法可以通过FK来完成这个操作,或者我需要某种触发器?

piztneat

piztneat1#

您可以在Table B的Email列上添加外键约束,以保持完整性。

ALTER TABLE B ADD CONSTRAINT fk_email
FOREIGN KEY ( EMAIL ) REFERENCES A ( EMAIL );
0ejtzxu1

0ejtzxu12#

唯一电子邮件应存储在单独的表X中:

CREATE TABLE X (email VARCHAR(255) PRIMARY KEY);

或者更好:

CREATE TABLE X (id INTEGER PRIMARY KEY, email VARCHAR(255) UNIQUE);

那么,表AB都应该有一列emailemail_id引用表Xemailid

CREATE TABLE A (id INTEGER PRIMARY KEY, email VARCHAR(255) REFERENCES X(email));
CREATE TABLE B (id INTEGER PRIMARY KEY, email VARCHAR(255) REFERENCES X(email));

或:

CREATE TABLE A (id INTEGER PRIMARY KEY, email_id INTEGER REFERENCES X(id));
CREATE TABLE B (id INTEGER PRIMARY KEY, email_id INTEGER REFERENCES X(id));

相关问题