这是我想要做的事情的例子:
我有 3 个表:
- 村庄(编号、名称)
- 家庭(id,village_id)
- 人员(名字、姓氏、家庭 ID)
我想确保同一个村子里没有 2 个名字和姓氏相同的人。
基本上我想做那种事情:
ALTER TABLE persons
ADD UNIQUE (first_name, last_name, households.village_id
WHERE household_id=households.id)
有没有办法做这样的事情?
最佳答案
你真的不能直接这样做,但如果这是为了存储现实世界的数据,理论上两个同名的人可以住在一个村庄里,所以这可能不是最好的主意?
如果您坚持走这条路,那么我建议使用存储过程来处理对该表的插入,并接收用户名和村庄等参数。然后存储过程可以在 INSERT 之前执行 SELECT 以检查冲突。这将取代任何 INSERT 查询。更新也需要通过程序处理以防止冲突。
关于MySQL 对多个表的列添加唯一约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15658487/