如何在插入后不插入相关数据的情况下获取插入的行ID和相关数据

詹斯

我有一组数据,这些数据需要在表中产生新的一行。创建该行后,我需要将元数据附加到与此信息相关的单独表中。这就是我需要创建我的[Identity]第一个,让GlobalId从排后面,然后安装[Accounts][Metadata]给它。

在此处输入图片说明

插入数据并获取插入行的ID很容易(请参见下面的查询)。但我很为难,我怎么取得personnumberfirstnamelastname插入到该临时表以及这样我就可以将相关的数据继续。

DECLARE @temp AS TABLE(
      [GlobalId] BIGINT
     ,[Personnumber] NVARCHAR(100)
     ,[Firstname] NVARCHAR(100)
     ,[Lastname] NVARCHAR(100)
);

;WITH person AS
(
    SELECT top 1
        t.[Personnumber]
        ,t.[Firstname]
        ,t.[Lastname]
    FROM [temp].[RawRoles] t
    WHERE t.Personnumber NOT IN 
        (
            SELECT i.Account FROM [security].[Accounts] i
        )
)
INSERT INTO [security].[Identities] ([Created], [Updated])
-- how do i get real related values here and not my hard coded strings?
OUTPUT inserted.GlobalId, 'personnumber', 'firstname', 'lastname' INTO @temp 
SELECT GETUTCDATE(), GETUTCDATE()
FROM person

PS背景故事。对我而言,身份只是我们将在其他系统中使用的全球ID的持有人,而不是实际的个人号码(等同于社会安全号码),这样,只有一个位置具有敏感号码,并且可以关联多个帐户标识,例如社会安全编号或AD帐户使用相同的全局ID。

PPS我宁愿避免使用游标,因为查询在第一次运行时将移动近200万条记录,每天运行几千条。

詹斯

@PeterHe给了我一个如何解决这个问题的想法 MERGE

得到它的工作如下。插入所有行后,我可以查询@temp以继续其余插入。

DECLARE @temp AS TABLE(
      [action] NVARCHAR(20)
     ,[GlobalId] BIGINT
     ,[Personnumber] NVARCHAR(100)
     ,[Firstname] NVARCHAR(100)
     ,[Lastname] NVARCHAR(100)
);

;WITH person AS
(
    SELECT top 1
        t.[Personnumber]
        ,t.[Firstname]
        ,t.[Lastname]
    FROM [temp].[RawRoles] t
    WHERE t.Personnumber NOT IN 
        (
            SELECT i.Account FROM [security].[Accounts] i
        )
)

MERGE [security].[Identities] AS tar
USING person AS src
ON 0 = 1 -- all rows from src need to be inserted, ive already filtered out using CTE Query.
WHEN NOT MATCHED THEN
   INSERT
   (
     [Created], [Updated]
   )
   VALUES
   (
        GETUTCDATE(), GETUTCDATE()
   )
OUTPUT $action, inserted.GlobalId, src.[Personnumber], src.[Firstname], src.[Lastname]  INTO @temp;


SELECT * FROM @temp

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在不插入任何数据的情况下获取php中的最后一个插入ID?

来自分类Dev

如何在不插入PHP的每个循环的情况下将数组插入数据库

来自分类Dev

如何在不触发多次插入/更新查询的情况下向数据库中插入/更新多行?

来自分类Dev

如何在不插入新对象的情况下从数据库更新对象?

来自分类Dev

相关表插入数据

来自分类Dev

如何在不复制现有数据的情况下插入新行

来自分类Dev

我们如何在不使用插入子句的情况下插入数据?

来自分类Dev

如何在不使用页面引用的情况下使用jQuery和Ajax在MySQL中插入数据

来自分类Dev

如何在插入和选择的情况下获取查询结果的数量?

来自分类Dev

如何在没有属性的情况下基于Enity类将数据插入JavaFX TableView?

来自分类Dev

如何在不提供主键的情况下将数据插入SQlite?

来自分类Dev

Django-获取相关密钥并插入数据库

来自分类Dev

将数据插入表中以获取SQLite后如何获取最后一行ID

来自分类Dev

在不使用“ .insert” /不手动重新排序的情况下添加列时,如何在数据表中的特定位置插入列?

来自分类Dev

Laravel 5将数据插入相关表?

来自分类Dev

我们可以在不插入数据的情况下更新 sqlite 表吗?

来自分类Dev

仅在不存在的情况下插入数据

来自分类Dev

如何在php中使用id获取数据并插入?

来自分类Dev

如何在不指定列的情况下从SELECT插入表?

来自分类Dev

如何在不转义URL的情况下插入超链接?

来自分类Dev

如何在不声明 SQL Server 类型的情况下使用参数插入多个值?

来自分类Dev

Elides联结表,如何在不向数据库查询该行引用的实体的情况下插入行?

来自分类Dev

如何在不知道PHP中没有关闭列的情况下插入数据

来自分类Dev

如何在没有批量复制程序 (BCP) 的情况下批量插入 Azure SQL 数据库?

来自分类Dev

如何在添加序列列的情况下插入列?

来自分类Dev

如何在添加序列列的情况下插入列?

来自分类Dev

如何在情况下使用大容量插入

来自分类Dev

在批量插入和更新数据的情况下Entity Framework的工作方式

来自分类Dev

PHP插入INTO不插入数据

Related 相关文章

  1. 1

    如何在不插入任何数据的情况下获取php中的最后一个插入ID?

  2. 2

    如何在不插入PHP的每个循环的情况下将数组插入数据库

  3. 3

    如何在不触发多次插入/更新查询的情况下向数据库中插入/更新多行?

  4. 4

    如何在不插入新对象的情况下从数据库更新对象?

  5. 5

    相关表插入数据

  6. 6

    如何在不复制现有数据的情况下插入新行

  7. 7

    我们如何在不使用插入子句的情况下插入数据?

  8. 8

    如何在不使用页面引用的情况下使用jQuery和Ajax在MySQL中插入数据

  9. 9

    如何在插入和选择的情况下获取查询结果的数量?

  10. 10

    如何在没有属性的情况下基于Enity类将数据插入JavaFX TableView?

  11. 11

    如何在不提供主键的情况下将数据插入SQlite?

  12. 12

    Django-获取相关密钥并插入数据库

  13. 13

    将数据插入表中以获取SQLite后如何获取最后一行ID

  14. 14

    在不使用“ .insert” /不手动重新排序的情况下添加列时,如何在数据表中的特定位置插入列?

  15. 15

    Laravel 5将数据插入相关表?

  16. 16

    我们可以在不插入数据的情况下更新 sqlite 表吗?

  17. 17

    仅在不存在的情况下插入数据

  18. 18

    如何在php中使用id获取数据并插入?

  19. 19

    如何在不指定列的情况下从SELECT插入表?

  20. 20

    如何在不转义URL的情况下插入超链接?

  21. 21

    如何在不声明 SQL Server 类型的情况下使用参数插入多个值?

  22. 22

    Elides联结表,如何在不向数据库查询该行引用的实体的情况下插入行?

  23. 23

    如何在不知道PHP中没有关闭列的情况下插入数据

  24. 24

    如何在没有批量复制程序 (BCP) 的情况下批量插入 Azure SQL 数据库?

  25. 25

    如何在添加序列列的情况下插入列?

  26. 26

    如何在添加序列列的情况下插入列?

  27. 27

    如何在情况下使用大容量插入

  28. 28

    在批量插入和更新数据的情况下Entity Framework的工作方式

  29. 29

    PHP插入INTO不插入数据

热门标签

归档