我有以下SP
create procedure dbo.i114_get_next_oid
as
begin
DECLARE @id as integer
DECLARE @num_ids as integer
EXEC dbo.i144_get_ids 2, 1, @id output, @num_ids output
SELECT @id as N'@base_id'
end
go
它通过调用为 SQL 插入拉取应用程序管理的 UID
exec dbo.i114_get_next_oid
我们的应用程序需求有所增长,我想知道如何使用 'exec dbo.i114_get_next_oid' 作为计算列规范?还是一种约束?对此挠头。谢谢!
这是表模式
CREATE TABLE [dbo].[TBL_VITAL_EVENTS](
[Location_ID] [uniqueidentifier] NOT NULL,
[Event_ID] [uniqueidentifier] NOT NULL,
[OBJECTID] [uniqueidentifier] NULL,
CONSTRAINT [PK_TBL_VITAL_EVENTS] PRIMARY KEY CLUSTERED
(
[Event_ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[TBL_VITAL_EVENTS] WITH CHECK ADD CONSTRAINT [FK_TBL_VITAL_EVENTS_GRSM_VITAL_SIGNS_PLOTS] FOREIGN KEY([Location_ID])
REFERENCES [dbo].[GRSM_VITAL_SIGNS_PLOTS] ([Location_ID])
GO
ALTER TABLE [dbo].[TBL_VITAL_EVENTS] CHECK CONSTRAINT [FK_TBL_VITAL_EVENTS_GRSM_VITAL_SIGNS_PLOTS]
GO
ALTER TABLE [dbo].[TBL_VITAL_EVENTS] ADD CONSTRAINT [DF_TBL_VITAL_EVENTS_Event_ID] DEFAULT (newsequentialid()) FOR [Event_ID]
GO
目前,应用程序 (GIS) 通过在应用程序中硬编码的 C# 填充 OBJECTID 字段。我们需要绕过这个逻辑,因为我们在插入的数据上执行一些额外的操作,同时它驻留在添加表中,然后再插入到业务表中。因此,我们现在的要求是使用 SP 或其他方法作为触发器或计算列规范,以使用下一个 OID 顺序填充 OID 字段。下一个 OID 由函数“dbo.i144_get_ids”管理,不幸的是,由于应用程序的体系结构,我们无法在插入时不使用该 SP。这来自此处的供应商文档:http: //help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#/in_SQL_Server/006z00000017000000/