リモートAPIにクエリを実行して多数の検索を実行するアプリケーションがあります。結果は私のデータ層(SQL Server)に取り込まれ、そこでユーザーがさらに対話したいかどうかを確認します。ユーザーがそのアイテムの操作を開始すると、それがシステム内にとどまることが不可欠ですが、残りの結果はまったく役に立たず、スペースを占有するだけです。
別のテーブルによって参照されていない行を削除するためにsprocを実行するタスクを作成することを考えていました。それを行う方法はありますか?
別の言い方をすると、次のようになります。参照整合性の違反が原因でエラーが発生する行をスキップするdeleteステートメントを実行する方法はありますか?
編集:@Kosからの新しい情報に感謝します...私が検討している代替パスは、テーブルにビット列を追加し、行が使用されて、タスクで行を削除するだけでfalseとマークされた場合にtrueとマークすることです。
わかりやすくするために、ここに状況の概要を示します。これらの構文は完全ではないかもしれませんが、うまくいけば、次のようなアイデアが得られます。
-- Where all the results get pulled down and held (The table I want to clean up every 2 hours or so)
CREATE TABLE [reservations].[DumpTable](
[utypeID] [bigint] IDENTITY(1,1) NOT NULL
-- Other columns
CONSTRAINT [PK_UnitTypesFound] PRIMARY KEY CLUSTERED
(
[utypeID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
-- This is one of many other tables that might reference the dump table
CREATE TABLE [reservations].[OtherTables](
[memberID] INT NOT NULL,
[utypeID] BIGINT NOT NULL -- Need to Know if the dumptable is referenced here
CONSTRAINT [PK_MemberUnitTypes] PRIMARY KEY CLUSTERED
(
[memberID],
[utypeID]
) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
ALTER TABLE [reservations].[OtherTables] WITH CHECK ADD CONSTRAINT [FK_OtherTable_DumpTable] FOREIGN KEY([utypeID])
REFERENCES [reservations].[DumpTable] ([utypeID])
ALTER TABLE [reservations].[OtherTables] CHECK CONSTRAINT [FK_OtherTable_DumpTable]