【发布时间】:2019-10-16 03:16:13
【问题描述】:
我有一个具有以下结构和数据的父表:
---------------------------------------------
| Id | TranslationId | Name |
---------------------------------------------
| 1 | NULL | Image1.jpg |
| 2 | NULL | Image7.jpg |
| 3 | NULL | Picture_Test.png |
---------------------------------------------
还有保存翻译图像的空子表:
-------------------------------------------------------------------------
| Id | De | Fr | En |
-------------------------------------------------------------------------
| | | | |
-------------------------------------------------------------------------
现在我正在寻找一个查询语句或至少几个无需任何进一步编程即可运行的查询。使用脚本或编程来完成这项工作很容易,但我经常遇到需要这种插入/更新的情况。而且每次都开发一个小型控制台应用程序是不可行的。
最后两张表应该是这样的:
---------------------------------------------
| Id | TranslationId | Name |
---------------------------------------------
| 1 | 28 | NULL |
| 2 | 29 | NULL |
| 3 | 30 | NULL |
---------------------------------------------
-------------------------------------------------------------------------
| Id | De | Fr | En |
-------------------------------------------------------------------------
| 28 | Image1.jpg | NULL | NULL |
| 29 | Image7.jpg | NULL | NULL |
| 30 | Picture_Test.png | NULL | NULL |
-------------------------------------------------------------------------
感谢您的任何建议。
【问题讨论】:
-
父表中有NULL时如何获取TranslationID?
-
Id是一个标识列。 1. 在子表上插入 De = 父级名称 2. 更新父级的 TranslationId = 子级的(新)id -
在插入子表时使用SCOPE_IDENTITY(),获取子表的Id值。稍后,更新 Parent 表以填充 TranslationId。如果子表必须引用父表 TranslationId,请使用 Sequence 对象而不是 Identity,并获取唯一值以插入到两个表中。
-
使用 OUTPUT 子句 docs.microsoft.com/en-us/sql/t-sql/queries/… 收集插入的 id 以更新原始表。
-
Serg 和 Sheerandra 你没事。我知道这个关键字。但在常规应用程序中,我会做一个循环(foreach,for,...)。我想知道如何在 SQL 中实现这一点? CTE,光标,...?
标签: sql sql-server tsql