我的 SQL 2012 数据库中有两个表。表:航程和国家。
Voyages 表包含信息“destinationID”(表示相应的 countryID)。Voyages 的数据是从一个包含国家名称的文本文件中导入的。我想要实现的是以下内容:
- 当向 Voyages 表添加新行时,将首先向 Country 表添加新行(生成新的 countryID 并插入国家名称)。
- 添加新的 Country 行后,生成的 countryID 将用于插入新的 Voyages 行(将 countryID 设置为 destinationID)。
我知道我可以在我的应用程序中通过解析文本文件、提取国家名称并将其添加到数据库中以获取新的 countryID 来执行此操作。然后我可以使用新 ID 添加一个新的 Voyages 行。但我也可以在数据库中完成整个工作吗?我考虑过使用触发器。
但是我会遇到一个问题,我最初必须在 Voyages 表中插入一个国家名称字符串,而最后我想插入一个 countryID (int)。
这将是某种我真的不喜欢的解决方法:
INSERT INTO voyages (voyageID, destinationID, destinationString) VALUES (1, 0, "BRAZIL");
像这样,我可以创建一个触发器(INSTEAD OF INSERT)来提取destinationString,以便插入一个新的国家行:
INSERT INTO countries (countryName) VALUES ("BRAZIL");
然后可以在我的触发器中使用生成的 countryID(例如 27)最终将新行插入到航程中:
INSERT INTO voyages (voyageID, destinationID, destinationString) VALUES (1, 27, NULL);
有没有更优雅的方法来做到这一点?
非常感谢!