代码之家  ›  专栏  ›  技术社区  ›  gin93r

我可以使用output into将数据添加到具有附加值的关系表中吗?

  •  0
  • gin93r  · 技术社区  · 6 年前

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

    物品表

    id | key | date

    翻译表

    id | article_key | lang | title | content

    key 是字符串,是主键。

    article_key 是一个外键,它与 钥匙 列。

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

    我听说过 OUTPUT INTO 但似乎我不能将其他值添加到翻译表中。同时,我也有一个错误,关于它是在任何一方的关系。

    我唯一的行动是 INSERT 在文章后面跟着 插入 用一个 SELECT 子查询以获取 钥匙 ?

    编辑:预期输出如下:

    物品

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

    文章翻译

    id | article_key | lang | title | content
    -----------------------------------------
    1  | somekey     | en   | lorem | ipsum
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Evaldas Buinauskas    6 年前

    好吧,根据你的描述,这是可行的:

    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;
    

    尝试此堆栈交换: https://data.stackexchange.com/stackoverflow/query/857925

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