【问题标题】:SDE Auto ID on Insert multiple records插入多条记录时的 SDE 自动 ID
【发布时间】:2015-08-31 17:56:35
【问题描述】:

这就是我的情况。我的数据位于 SQL Server 2008 R2 版本的 ESRI SDE 数据库中,我希望为其自动填充唯一 ID。我发现一个脚本可以很好地插入单个记录(它也适用于多个记录),它将从表中提取最大 ID 并向其添加一个数字以进行插入。

我遇到的问题是由于 ESRI 插入记录的方式。当您在地图软件 (ArcMap) 中创建数据时,每次点击保存时,它都会作为表格上的插入。因此,如果您要在一条记录后点击保存并且最大 ID 为 27,则新记录/数据的 ID 将为 28。再看一次这种情况,但这次您在点击保存之前创建了两个功能,这会将两条记录都插入到表中同时,每条记录的 ID 为 28,而不是分别为 28 和 29。

话虽如此,我已经粘贴了我在下面使用的代码,该代码适用于原始数据集和从它被版本化创建的增量表,但我需要帮助弄清楚如何使用来自当前数据集为插入的每个记录填充下一个记录 ID,而不在多记录插入中复制它。此代码专注于宗地边界的宗地 ID,在许多情况下,我可能必须拆分宗地,这将导致两个要素需要唯一 ID。欢迎和赞赏任何和所有建议

CREATE TRIGGER [dbo].[PARCEL_AUTO_ID]
    ON [dbo].[a405]
    FOR INSERT, UPDATE
AS
BEGIN
    DECLARE @Max_Value int
    SET @Max_Value = (SELECT MAX(PARCEL_ID) FROM [dbo].[TOWN_PARCELS])+1

    UPDATE [dbo].[a405]
    set PARCEL_ID = @Max_Value
        WHERE PARCEL_ID IS NULL

    UPDATE [dbo].[TOWN_BUILDING_FOOTPRINTS]
    set PARCEL_ID = @Max_Value
        WHERE PARCEL_ID IS NULL
END

【问题讨论】:

  • 谢谢 jpw :) 我只是在编辑它以使其正确显示。非常感谢,因为我仍在努力正确使用本网站
  • 如果你想格式化代码块,标记它并点击 ctrl+k

标签: database sql-server-2008-r2 versioning esri


【解决方案1】:

我终于明白了。它应该是这样的。

CREATE TRIGGER [dbo].[PARCEL_AUTO_ID]
    ON [dbo].[a405]
    FOR INSERT, UPDATE
AS
BEGIN
    DECLARE @Max_Value int
    SET @Max_Value = (SELECT MAX(PARCEL_ID) FROM [dbo].[a405])+1

    UPDATE [dbo].[a405]
    set PARCEL_ID = @Max_Value
        WHERE PARCEL_ID IS NULL

    UPDATE [dbo].[TOWN_BUILDING_FOOTPRINTS]
    set PARCEL_ID = @Max_Value
        WHERE PARCEL_ID IS NULL
END

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-22
    • 1970-01-01
    相关资源
    最近更新 更多