我只想插入一行,如果它的父表存在于另一个表中。
thread1 表
id | content |
1 | Hello World |
2 | Bye World |
thread2 表
id | content |
1 | Naruto |
2 | DragonBallz|
评论表
id | thread_id| thread_type | content |
1 | 1 | thread1 | hellow |
2 | 1 | thread2 | bye-bye |
现在如果我这样做
INSERT INTO comment(thread_id,thread_type,content)VALUES('3','thread2','Whatever');
它应该失败,因为
3
不存在于 thread2
表中。这可以通过从线程表中检查来实现。但是没有它有可能吗?不做额外的查询?
更新
上表已更新。
thread_type
指的是表 thread1
& thread2
最佳答案
在两个表之间创建一个外键,使用 thread(id) 作为父级,使用 comment(thread_id) 作为子级,应该可以解决问题。
这是您应该运行的命令 -
ALTER TABLE comment
ADD FOREIGN KEY
(thread_id)
REFERENCES thread (id)
关于php - Mysql - 检查行是否存在,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38683973/