Deleted
フラグ(bit
)のカラムを持つテーブルがあります。どのようにそれを実現することが可能ですか?この列以下の条件でテーブル内の削除されたフラグ
:
レコードが新規または更新され、0
に設定されたソースから削除された場合は1
に設定されている場合は、私が思いますそれはマージステートメントで行うことが可能です。しかし、私はこれを行う方法を知らない。それとも別の方法がありますか?
Deleted
フラグ(bit
)のカラムを持つテーブルがあります。どのようにそれを実現することが可能ですか?この列以下の条件でテーブル内の削除されたフラグ
:
レコードが新規または更新され、0
に設定されたソースから削除された場合は1
に設定されている場合は、私が思いますそれはマージステートメントで行うことが可能です。しかし、私はこれを行う方法を知らない。それとも別の方法がありますか?
私はあなたがこれを行うには、MERGE文を使用できると思います:
merge into myTable using SourceTable
on myTable.pk = sourcetable.pk
when matched then update set
/*add any update columns here*/
Deleted = 0
when not matched by target then insert
(pk, abcd, deleted)
values
(pk, xyz, 0)
when not matched by source then update set Deleted = 1
これは、ターゲット表に存在しない任意の行を挿入します。一致する行と宛先の行はすべて更新されますが、ソースにはフラグが1に更新されます。
ありがとう、おい! –
Deleted
フラグのノルムは、削除されていないため、0
になるため、要件を再確認してください。削除済みの場合は1
です。 0
はfalse、1
はtrueです。それはとても一般的です、実際には、私はそれがあなたが望んでいたと仮定しようとしています。 MERGE
でそれを設定するよう
、あなたのような何かをしたいと思います:
`DELETE YourTable FlagColumn = '1'としてMERGE MyTable as Target
USING YourTable as Source ON
Target.Id = Source.Id
WHEN MATCHED THEN
--Exists in both Source and Target
UPDATE SET Deleted = 0 /* include other columns to update here */
WHEN NOT MATCHED BY Source THEN
--Source was deleted
UPDATE SET Deleted = 1
WHEN NOT MATCHED BY Target THEN
--Source was added
INSERT (Id, Deleted /* include other columns to insert here */)
VALUES (Source.Id, 1 /* include other columns to insert here */);
シンプル? (私は実際にあなたが1または0をどのように設定するかはわかりません...)あなたの編集によれば、それはむしろ 'WHERE FlagColumn = 0'であるべきです... **実際のデータを持つCarefull !!! ** – Shnugo