次のクエリがあります。 - テーブルltr_program
を循環してその値を新しく作成したテーブルに挿入するカーソル。新しく作成されたテーブルにidフィールドも追加されます。SQL Server:cursor存在しない場合に行を挿入します。
私は、ターゲットテーブルにまだ存在していない場合にのみ、そのIDを追加するのに苦労しています(ジョブは定期的に実行され、時間がたつにつれて新しいIDが追加されます)。新しく作成したデータを追加するだけで、コードをよりダイナミックにしたいと思っています。
DECLARE @next int, @program int
DECLARE insert_cursor CURSOR FOR
SELECT id
FROM ltr_program
OPEN insert_cursor
FETCH NEXT FROM insert_cursor INTO @program
WHILE @@FETCH_STATUS = 0
BEGIN
SET @next = (SELECT MAX(id) FROM LTR_Budget) + 1
INSERT INTO LTR_Budget (id, ProgramID)
SELECT @next, @program
FETCH NEXT FROM insert_cursor INTO @program
END
CLOSE insert_cursor
DEALLOCATE insert_cursor
これはトリックを行う必要があります
MySQLまたはSQL Server?私は恐れることができません。 –
申し訳ありませんが、SQL Server(速いをクリックするとどうなりますか) – Elizabeth
カーソルを使用しないでください。これは単一の挿入ステートメントでなければなりません。もちろん、アイデンティティを使用する代わりに、独自のロールを使用して値を増やすと、並行性の問題が発生する可能性があります。 –