我只想插入一行,如果它的父表存在于另一个表中。

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/

10-10 01:55