所以这是我的情况。我有数据位于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
答案 0 :(得分:0)
我终于明白了。它看起来应该是这样的。
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