首页 > 解决方案 > 我可以使用 OUTPUT INTO 将数据添加到具有附加值的关系表吗?

问题描述

我有两张桌子。一个保存文章的通用数据,另一个保存文本的翻译。像这样的东西:

文章表

id | key | date

翻译表

id | article_key | lang | title | content

key是一个字符串并且是主键。

article_key是将它与列中的文章相关联的外键key

当我向文章添加新行时,我希望能够使用key刚刚插入的行并将新行添加到翻译表中。

我已经阅读过,OUTPUT INTO但似乎我无法将其他值添加到 Translations 表中。我也得到一个错误,关于它在关系的任何一方。

我唯一的做法是INSERT进入文章,然后是INSERT带有子查询的SELECT子查询来获取key

编辑:预期的输出将是这样的:

文章

id | key | date
---------------
1  | somekey | 2018-05-31

文章翻译

id | article_key | lang | title | content
-----------------------------------------
1  | somekey     | en   | lorem | ipsum

标签: sqlsql-server

解决方案


好吧,这可以根据您的描述起作用:

SET NOCOUNT ON;

DECLARE @Articles TABLE (id INT NOT NULL
  , [key] VARCHAR(50) NOT NULL
  , [date] DATE NOT NULL);

DECLARE @ArticleTranslations TABLE (id INT NOT NULL
  , article_key VARCHAR(50) NOT NULL
  , lang VARCHAR(50) NOT NULL
  , title VARCHAR(50) NOT NULL
  , content VARCHAR(50) NOT NULL);

INSERT @Articles (id, [key], [date]) -- This is insert into @Articles
OUTPUT INSERTED.id, INSERTED.[key], 'en', 'lorem', 'ipsum' -- This is insert into @ArticleTranslations
INTO @ArticleTranslations (id, article_key, lang, title, content) -- This is insert into @ArticleTranslations
VALUES (1, 'somekey', GETDATE()); -- This is insert into @Articles

SELECT *
FROM @Articles;

SELECT *
FROM @ArticleTranslations;

试试这个 Stack Exchange:https ://data.stackexchange.com/stackoverflow/query/857925

也许事情没有那么简单。所以让我知道这是否有效。


推荐阅读