我有两张桌子。Person
和Phones
。许多电话号码可以通过外键与一个人关联。如果我想添加一个电话号码并将其映射到特定的人,我的SQL应该是什么样?
据我了解:
SQL语句应该是事务性的,因此首先我必须在Person
表中插入一个人,然后在插入电话号码Phones
并将其与Person
表中刚刚插入的行对应起来。
如果另一表中已经存在行怎么办?我应该如何处理?
我正在寻找一个干净和简单的解决方案或sql示例。
注意:我无权创建存储过程。
如果您要插入带有newPerson
的新Phone
字符,那么您将
Person
表格。LAST_INSERT_ID()
得到它只是对插入生成的ID。Phone
表中。如果您要Phone
为现有插入新的Person
,则您会
Person
如果没有ID,请选择以获得其ID
使用该ID将记录插入Phone
表中。
如果另一表中已经存在行怎么办?我应该如何处理?
在此上下文中定义“已经存在”。什么定义了数据的唯一性?在这种情况下,您可能需要考虑将该唯一性定义合并到该表的主键中。(可以由不止一列组成。)否则,您将不得不SELECT
从表中查看该行是否已经存在。如果是这样,请对其进行更新。如果没有,插入它。(或者,但是,您想在逻辑上处理您域中已经存在的数据。)
请记住,在这种情况下,很容易过于独特。例如,您可能很想尝试在这些表之间创建多对多关系,以便避免重复的电话号码。在现实世界中,这最终不是一个好主意,因为可能:
在过度规范的情况下,上述事件将导致以下情况之一:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句