如果在添加外键时记录不存在,是否可以自动将记录插入主表?
例如,假设这些表: - 用户(身份证,姓名,年龄) - 主题(id,name) - post(userId,topicId,text,createdAt,updatedAt)
现在我从某个来源提取帖子并将记录保存在post
表中。但有时返回的数据包含尚未在我的数据库中的userId
或topicId
。因此,每当我必须检查是否存在user
和topic
记录时,如果不存在则保存。只有这样,我的post
记录才有效并保存。
我希望能够保存post
,即使其相关的user
或topic
不存在,并添加一个空行,其中这些表中包含的ID为已存储在post
表格中。
示例:
当前用户表
+----+------+-----+
| id | name | age |
+----+------+-----+
| 15 | Paul | 26 |
+----+------+-----+
| 56 | John | 31 |
+----+------+-----+
当前主题表
+----+----------+
| id | name |
+----+----------+
| 5 | Business |
+----+----------+
| 12 | General |
+----+----------+
目前的帖子表:
+--------+---------+----------------+-------------+-------------+
| userId | topicId | text | createdAt | updatedAt |
+--------+---------+----------------+-------------+-------------+
| 15 | 12 | blah blah blah | *timestamp* | *timestamp* |
+--------+---------+----------------+-------------+-------------+
| 56 | 5 | lorem ipsum... | *timestamp* | *timestamp* |
+--------+---------+----------------+-------------+-------------+
然后我从某些来源获取帖子,获取ID为72的用户在ID为2的主题中发布的新1 This is a new topic
。源只返回id,并获取其余的详细信息对于用户,我应该向他们的api提出另一个请求。
后表:
+--------+---------+---------------------+-------------+-------------+
| userId | topicId | text | createdAt | updatedAt |
+--------+---------+---------------------+-------------+-------------+
| 15 | 12 | blah blah blah | *timestamp* | *timestamp* |
+--------+---------+---------------------+-------------+-------------+
| 56 | 5 | lorem ipsum... | *timestamp* | *timestamp* |
+--------+---------+---------------------+-------------+-------------+
| 72 | 2 | This is a new topic | *timestamp* | *timestamp* |
+--------+---------+---------------------+-------------+-------------+
之后的用户表:
+----+------+-----+
| id | name | age |
+----+------+-----+
| 15 | Paul | 26 |
+----+------+-----+
| 56 | John | 31 |
+----+------+-----+
| 72 | | |
+----+------+-----+
后的主题表
+----+------------+
| id | name |
+----+------------+
| 2 | |
+----+------------+
| 5 | Business |
+----+------------+
| 12 | General |
+----+------------+
所以现在我有了这个,我可以向他们的api发出请求,为id为72的用户和id为2的话题的数据寻找数据。
答案 0 :(得分:1)
人们对此可以有强烈的意见,我们可以恭敬地不同意。
参考评论说人们这样做(故意在表格中加载空白和空垃圾),如帖子Here中所见。
我说:这个参考文献是一个人们不在乎的财团。写一个 帖子说人们想要听到什么,把棒棒糖放在他们的 嘴巴,不是一个体面的答案。事实上,它可以很漂亮 不负责任的。这个OP正在以错误的顺序做事。放东西 在一些临时表中,调用其他API,获取干净的东西,那 让我晚上睡得好。参照完整性具有意义。我们 不要扭曲它并且为了取悦他们而混淆每个人。
我们的一部分责任是以正确的顺序做正确的事情,以保持我们的数据清洁并支持参考完整性。并引导我们的同行走向相同而不是相反。 Prime指令的排序。