最初のテーブルのデータを使用してテーブルを更新しようとしています。私はこのようなものを書こうとしています:ケーススタディからの更新
-- Create the temp tables
DROP TABLE #MyNewTable
CREATE TABLE #MyNewTable
(
UserId int IDENTITY(1, 1)
NOT NULL,
MarriedFlag bit NOT NULL
)
DROP TABLE #MyOldTable
CREATE TABLE #MyOldTable
(
UserId int IDENTITY(1, 1)
NOT NULL,
Married nvarchar(50) NULL
)
-- Insert test values
INSERT INTO #MyOldTable
([Married])
VALUES ('married'),
('married'),
('not married'),
('maybe married')
GO
-- First pass will do nothing as there is no data in #MyNewTable
UPDATE #MyNewTable
SET [MarriedFlag] = CASE I.[Married]
WHEN 'married' THEN 1
ELSE 0
END
FROM [#MyOldTable] AS I,
[#MyOldTable] AS O
WHERE I.[UserId] = O.[UserId]
-- Will insert 4 values into #MyNewTable
SET IDENTITY_INSERT [#MyNewTable] ON
INSERT INTO #MyNewTable
([UserId],
[MarriedFlag])
SELECT I.[UserId],
CASE I.[Married]
WHEN 'married' THEN 1
ELSE 0
END
FROM [#MyOldTable] AS I
WHERE I.[UserId] NOT IN (SELECT [UserId]
FROM [#MyNewTable])
SET IDENTITY_INSERT [#MyNewTable] OFF
SELECT *
FROM [#MyOldTable]
-- #MyOldTable Expected Output
UserId Married
1 married
2 married
3 not married
4 maybe married
SELECT *
FROM [#MyNewTable]
-- #MyNewTable Expected Output
UserId MarriedFlag
1 1
2 1
3 0
4 0
これはトリガーの一部であることに注意してください。考えられるのは、古いテーブルが更新され、新しい値がクリーンアップされ、有効であれば新しいテーブルに挿入されるということです。
"** **ノー行く" 手段」私たちのより多くの何を言っていません** no go ** "と答えています。 – usr
エラーが表示されますか?結婚式の種類は何ですか? –
この質問は前提です。 – FlavorScape