跨多个表的唯一GUID

时间:2019-05-10 12:32:52

标签: sql sql-server tsql

我正在进行ETL流程,在该流程中,我们将数据从多个暂存表移至其对应的目标表(进行了一些转换)。

此过程涉及一个父存储的proc,它调用子proc,每个表1个proc。

我们有一个日志表,其中有一个GUID字段作为主键。对于在相应ETL过程中更新/插入的所有记录,此GUID应该保持相同。

当前,我执行以下操作:

DECLARE @etlid UNIQUEIDENTIFIER = NEWID()
BEGIN
    BEGIN TRY
        EXEC dbo.etl_premier_main @etlid
        EXEC dbo.etl_premier_financial @etlid

我们只是在父过程中声明了一个GUID,并将其作为参数传递给子过程。

但是,此方法不能确保每次都会为日志表生成唯一值。

任何助手将不胜感激。

1 个答案:

答案 0 :(得分:1)

您可以尝试切换到NEWSEQUENTIALID()

  

创建一个GUID,该GUID大于自Windows启动以来在指定计算机上此功能先前生成的任何GUID。

出于某些考虑,我会阅读以下Microsoft Doc

DECLARE @etlid UNIQUEIDENTIFIER = NEWSEQUENTIALID() BEGIN
    BEGIN TRY
        EXEC dbo.etl_premier_main @etlid
        EXEC dbo.etl_premier_financial @etlid