Merge (Transact-SQL)

Azt jelzi egy adott területen a MERGE utasítás az ideiglenes elemzi eredményhalmaz vagy nézet, amely az úgynevezett közös asztal kifejezést. Az eredmény halmaz, amelyre hivatkoznak a MERGE utasítás, származik egy egyszerű lekérdezést. További információért lásd. Keresztmetszetűeknek common_table_expression (-SQL).

TOP (expressziós) [percent]

Jelzi számát vagy százalékát sorok alá ezt a műveletet. expresszió kifejezés lehet egy olyan szám vagy százalékos sorok. Vonal által említett kifejezés TOP, nem rendezett egy adott sorrendben. További információkat. Lásd TOP (-SQL).

Neve az adatbázis, amelyben az asztalon található target_table.

A séma nevét, amelyhez az asztalra target_table.

A tábla vagy nézet, hogy az összehasonlítás elvégezhető az adatvonalak a táblázat azzal a feltétellel, . Target_table paraméter a cél minden betét, frissítés vagy törlés az alábbi javaslatokat MERGE nyilatkozatot.

Ha target_table érv az a nézet, hogy minden olyan tevékenységet végzett vele, meg kell felelnie a frissítésére nézeteit. További információért lásd. Szakaszban módosítása adatokat érdekében.

Táblázat target_table nem lehet eltávolítani, és ez nem lehet meghatározni a szabályokat.

Egy másik nevet használt való hivatkozások a táblázatban.

Meghatározza az adatforrást társított adatokat a táblázat sorai a alapján target_table feltételek . Az eredmény ez a meccs határozza meg a műveleteket végzik javaslatokkal MERGE nyilatkozatot. érvelés Lehet távoli asztal vagy amely hozzáfér a távoli asztal.

érvelés Származtatni lehet táblázatot használva kivitelező Transact-SQL táblázat értékeit építeni egy táblázatot feltüntetésével több sorban.

További információ a szintaxist és érvek a javaslat, lásd. A FROM záradék (-SQL).

Meghatározza azokat a feltételeket, amelyek mellett az asztal target_table csatlakozik a táblázat az összehasonlítás céljából.

Fontos, hogy adja csak az oszlopokat a céltábla, hogy használják keresni mérkőzések. Más szóval, meg kell adni a céltáblát oszlopok, amelyek, mint a megfelelő oszlop az eredeti tábla. Nem ajánlott, hogy növelje lekérdezés áteresztőképesség miatt sorainak szűrését a céltáblát egy mondatot, olyan az AND NOT target_table.column_x = érték. Ez ahhoz vezethet, hogy váratlan és hibás eredményekhez vezethetnek.

Összeillesztve AKKOR

Azt állítja, hogy minden target_table vonalon. amelyek megfelelnek a visszaadott sorok ON , és megfelelnek egy további keresési feltételeket, frissített vagy törölt összhangban a javaslat .

MERGE utasítás lehet, hogy nincs több, mint két mondat, ha válogatni. Ha a két javaslat, az első mondat kell kísérnie egy javaslatot és . Bármely vonal a második, ha válogatni javaslat csak azokra az esetekre, amikor a nem az első használat. Ha van két javaslatot, ha válogatni, az egyik meg kell adni a frissítési művelet, a másik - a kereset DELETE. Ha az UPDATE kereset javaslatban megjelölt és több mint egy sort Ez egy sornak felel meg a target_table alapú , Az SQL Server hibát ad vissza. MERGE nyilatkozatot nem lehet használni, hogy frissítse egy sort többször, és azt is lehet használni, hogy frissítse és törölje az ugyanabban a sorban.

HA NEM találat [Target], majd

Ez azt jelzi, hogy a húr van behelyezve target_table táblázatot minden egyes sora által visszaadott expressziós ON , amely nem felel meg a sorban a táblázatban target_table. de megfelel a további keresési feltétel (ha van ilyen). Az értékek beszúrni által meghatározott javaslatok . MERGE nyilatkozat csak egy javaslat, ha válogatni.

HA nem párosul majd a forrásról

Azt állítja, hogy minden target_table vonalon. amelyek nem felelnek meg a visszaadott sorok ON , és megfelelnek egy további keresési feltételeket, frissített vagy törölt összhangban a javaslat .

MERGE utasítás lehet, hogy nincs több, mint két mondat HA nem párosul FORRÁS. Ha a két javaslat, az első javaslatot kell csatolni egy javaslatot és . Minden egyes kiválasztott sor a második mondatot, amikor nem párosul FORRÁS csak olyan esetekben alkalmazható, ha nem alkalmazzák az első. Ha van két javaslatokkal nem párosul forrást, majd az egyik, hogy jelezze a frissítési művelet, és a többi - a kereset DELETE. a feltétel Csak akkor olvassa el a céltáblát oszlopokat.

Ha a vonal nem tér vissza asztal , Az oszlopok nem kapnak hozzáférést a forrás tábla. Ha a frissítés művelet vagy eltávolítását vannak megadva , javaslat utal, hogy a forrás tábla, és visszatér a hiba 207 (érvénytelen oszlop neve). Például a javaslat HA nem párosul majd a forrásról UPDATE SET TargetTable.Col1 = SourceTable.Col1 utasításokat hibákat okozhat miatt elérhetetlenség col1 oszlopot a forrás tábla.

Meghatározza bármilyen érvényes keresési feltételt. További információért lásd. A keresési feltétel (-SQL).

Azt jelzi, egy vagy több tábla tippeket, hogy használják a cél táblát beszúrás, frissítés vagy törlés végzik MERGE utasítás. Ki kell használni a kulcsszó szerinti és a zárójelben.

Segítségével NOLOCK és READUNCOMMITTED érvek tilos. További információ a tábla tippeket, lásd. Lásd a táblázatot tanácsok (-SQL).

Megadása TABLOCK tipp a céltábla INSERT utasítás ugyanaz lesz a hatása, mint egy jelzés TABLOCKX tippeket. A táblázat kizárólagos zár alkalmaznak. Ha megadott FORCESEEK, majd felvisszük egy tiszta megjelenése a céltáblát, forrásra kapcsolódik asztalra.

Megjegyzés READPAST javaslat HA NEM találat [Target] majd helyezze vezethet INSERT művelet, amelyek sértik UNIQUE korlátozás.

INDEX (index_val [. N])

Adja meg a nevét vagy azonosítóját egy vagy több indexei a céltáblát, hogy végre egy explicit kapcsolatot az eredeti táblázatban. További információkat. Lásd a táblázatot tanácsok (-SQL).

Visszaadja egy string minden egyes sorában target_table. frissítik, ki vagy törölt nélkül adott sorrendben. További információkért érveket a javaslat látni. §-kimenet záradék (-SQL).

OPTION ( [. n])

Ez kimondja, hogy a beállításokat a mód, ahogyan a Database Engine az állítás, használja optimalizáló tippeket. További információkat. Lásd lekérdezéstippnek (-SQL).

Megadja, frissíteni vagy törölni, amely alkalmazható minden sort target_table. Nem megfelelő sorokat, amelyek vissza ON és megfelelnek minden további keresési feltételeket.

UPDATE SET

Megadja a lista oszlop nevek, vagy változók frissíteni kell a céltáblát, és az értékeket kell használni, hogy frissítse őket.

További információkért érveket a javaslat, lásd. Az UPDATE szakasz (-SQL). Értéket ad egy változónak azonos értékek, mint az oszlop nem megengedett.

Ez azt jelzi, hogy a vonalak egybeesnek húrok target_table. hagyni.

Meghatározza az értéket, hogy beilleszthető a céltáblát.

A lista, amely egy vagy több oszlop a céltábla, amelybe az adatok van behelyezve. meg kell adnia az oszlopok egy-egy címke nevet, mert különben a MERGE utasítás hibát ad vissza. column_list érvet el kell zárójelbe és vesszővel elválasztva.

Vesszővel elválasztott értékek állandók, változók vagy kifejezések visszatérési értékek szúrni a céltáblát. Kifejezéseket nem tartalmazhat EXECUTE utasítással.

Kitölti beillesztett alapértelmezett karakterlánc meghatározni az egyes oszlop.

További információ a megrendelésről, lásd. § INSERT utasítás (-SQL).

Adja meg a keresési kifejezések jelzésére vagy . További információkért érveket a javaslat látni. A keresési feltétel (-SQL).

Meg kell adni legalább az egyik a három javaslat illeszkedik, de lehet bármilyen sorrendben. Egy mondatban párosított változót nem lehet többször frissítik.

Az összes műveletet deléció, inszerció vagy frissítés, kapcsolatban az említett cél MERGE utasítás asztal, feltéve, hogy valamennyi korlátozás definiált ez a táblázat, beleértve minden lépcsőzetes hivatkozási egység megszorításokat. Ha IGNORE_DUP_KEY van kapcsolva az összes egyedi indexek a céltáblát, a MERGE utasítás ezt a paramétert figyelmen kívül hagyja.

Ahhoz, hogy a MERGE utasítás, szükség van egy pontosvessző (;) jeleként a végén az utasításokat. 10713 hiba akkor jelentkezik, ha a MERGE utasítás végrehajtása semmi jele a végén az építkezést.

Ha a függvény @@ ROWCOUNT (-SQL) használják az egyesítés után nyilatkozatot, visszatér az összes behelyezett, frissített és törölt sorokat a kliens.

Kulcsszó egyesítés teljesen fenntartva, ha az adatbázis kompatibilitás szint beállítása 100. Az egyesítés kimutatás áll rendelkezésre a kompatibilitási szintet 90 és 100, de ez a kulcsszó nem teljesen fenntartva szinten 90 kompatibilitás.

Végrehajtása a ravaszt

Minden betét, frissítésére vagy törlésére meghatározott MERGE utasítás, az SQL Server fut az összes megfelelő UTÁN kiváltó meghatározni a céltábla, de nem garantálja az adott sorrendben égetés ravaszt. A kiváltó okok meghatározása egy és ugyanazon intézkedések végrehajtását meghatározott módon, a felhasználó által. További információ a beállítás a végrehajtás sorrendje kiváltja cm. Meghatározásakor az első és utolsó ravaszt.

Ha a céltábla szerek helyett ravaszt beszúrni, frissítésére vagy törlésére végrehajtható utasításokat összeolvad, engedélyezni kell HELYETT ravaszt minden műveletre meghatározott MERGE utasítás.

Ha target_table táblázat azonosítja kiváltja HELYETT UPDATE vagy törlés helyett, akkor törölje vagy frissítési művelet nem teljesülnek. Ehelyett indul kiváltó, és egészül ki, és hagyni táblázatokat töltenek meg.

Ha target_table táblázat azonosítja triggerek HELYETT betét, a behelyezési művelet végrehajtásra kerül. Ehelyett indul kiváltó, és ki a táblázat lakott kell.

Kapcsolódó cikkek