オンラインで検索して以下の解決策を試しましたが、機能しません。テーブルに行を入力しません。
INSERT INTO [CollisionBegin]
SELECT '999-999-99999-9999-9999', [LocalNum], [version], [Submitted]
FROM [CollisionBegin]
WHERE [UniqueColID] = '2C024576-10BB-4A12-8B6E-BB03191866DE';
私がやろうとしていること:テーブル内の行を見つけてUniqueColdID="2C024576-10BB-4A12-8B6E-BB03191866DE"
これにより、これを持つ行に対応するすべての列が取得されますUniqueColID
。ここで、このレコードを再挿入しますが、NEW UniqueColID, "999-999-99999-9999-9999"
を使用します。
上記のコードは、Webで見つけた解決策でしたが、ストアドプロシージャでそのステートメントを実行した後、何も起こらなかったため、機能しませんでした。
これは私のストアドプロシージャです:
ALTER PROCEDURE [dbo].[AmendInsertDuplicateFields]
AS
BEGIN
INSERT INTO [MVCNew].[dbo].[CollisionBegin]
SELECT
'999-999-99999-9999-9999', [LocalNum], [version], [Submitted]
FROM
[MVCNew].[dbo].[CollisionBegin]
WHERE
[UniqueColID] = '2C024576-10BB-4A12-8B6E-BB03191866DE';
END
インサートに値を明示的に提供する必要があることを知っています。
INSERT INTO [MVCNew].[dbo].[CollisionBegin] (Column1, Column2, Column3, etc)
SELECT Column1, Column2, Column3, etc
FROM...
しかし、これを行うために必要なテーブルが約8つあり、テーブルごとに30の列があるため、混乱します。
私はちょうど試しました:
CREATE TEMPORARY TABLE chan2 ENGINE=MEMORY SELECT * FROM [MVCNew].[dbo].[PrideMVCCollisionBegin] WHERE UniqueColID='2C024576-10BB-4A12-8B6E-BB03191866DE';
UPDATE chan2 SET UniqueColID='999-999-99999-9999-9999';
INSERT INTO [MVCNew].[dbo].[PrideMVCCollisionBegin] SELECT * FROM chan2;
DROP TABLE chan2;
しかし、エラーが発生します:
Unknown object type 'TEMPORARY' used in a CREATE, DROP, or ALTER statement.