私は次の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 フィールドに入力します。挿入されたデータがビジネス テーブルに挿入される前に、追加テーブルに存在する間、挿入されたデータに対していくつかの追加操作を実行しているため、そのロジックを回避する必要があります。そのため、次の OID を使用して OID フィールドを順番に入力するには、SP またはその他の方法をトリガーとして使用するか、計算列の指定を使用する必要があります。次の OID は関数 "dbo.i144_get_ids" によって管理されますが、アプリケーションのアーキテクチャにより、残念ながら挿入でその SP を使用することはできません。これは、次のベンダードキュメントから提供されています。