以下是我的数据库的简化版本:
+-----------+
| USER | +-------------------+
+-----------+ | EMAIL |
|user_id | +-------------------+
|email_id FK+-+--------<+email_id |
|email_name | |email_domain UNIQUE|
+-----------+ +-------------------+
如您所见,我已将电子邮件规范化,以便将电子邮件域名和电子邮件名称分开 (例如,如果email = foo@example.com则email_name = foo; email_domain = example.com)
但这引入了我自己无法解决的问题。当插入USER时,我想检查email_domain是否存在以及是否存在,然后获取该email_id并将其作为email_id插入USER,否则我想创建新的EMAIL,获取新创建的电子邮件ID并插入用户作为email_id。
在处理一次插入多个表时是否有一些标准方法?
答案 0 :(得分:1)
执行此操作的一种方法是在插入和更新(可能是删除)上使用触发器,该触发器将在电子邮件表中查找并相应地更新用户表。这将确保数据永远不会被破坏并严重更新。
另一种方法是创建存储过程以在用户表中执行插入和更新。
第三种方法是在应用程序代码中执行此操作,该应用程序代码与存储过程非常相似,但不是数据库的一部分,并且不容易被其他应用程序重用。
这些方法中的任何一种都是完全合理的方法,并且有其优点和缺点。