考虑两个具有多对多关系的表:
Company Speciality
--------- ---------
id id
--------- ---------
1 21
2 22
3 23
4
CompanySpeciality
--------------------------
company_id | speciality_id
--------------------------
1 | 21
1 | 22
4 | 21
4 | 23
我要删除公司4,并将其专长与公司1相关联。
如果我在CompanySpeciality上使用简单的UPDATE语句来设置“ company_id = 1 WHERE company_id = 4”,那么我将面临主要的违规行为,因为对1 | 21已经存在。
是否可以通过单个查询更新关系表?此查询应仅影响不会重复的行。
结果将是:
CompanySpeciality
--------------------------
company_id | speciality_id
--------------------------
1 | 21
1 | 22
1 | 23
最佳答案
您不想UPDATE
,您想INSERT
and ignore dupes:
INSERT IGNORE INTO CompanySpeciality (company_id, speciality_id)
SELECT 1, speciality_id
FROM CompanySpeciality
WHERE company_id=4
关于mysql - 在不违反主要约束的情况下更新多对多关系表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14586724/