DELETE (Transact-SQL)
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Warehouse v Microsoft Fabric
databázi SQL v Microsoft Fabric
Odebere jeden nebo více řádků z tabulky nebo zobrazení v SQL Serveru.
Syntax
-- Syntax for SQL Server and Azure SQL Database
[ WITH <common_table_expression> [ ,...n ] ]
DELETE
[ TOP ( expression ) [ PERCENT ] ]
[ FROM ]
{ { table_alias
| <object>
| rowset_function_limited
[ WITH ( table_hint_limited [ ...n ] ) ] }
| @table_variable
}
[ <OUTPUT Clause> ]
[ FROM table_source [ ,...n ] ]
[ WHERE { <search_condition>
| { [ CURRENT OF
{ { [ GLOBAL ] cursor_name }
| cursor_variable_name
}
]
}
}
]
[ OPTION ( <Query Hint> [ ,...n ] ) ]
[; ]
<object> ::=
{
[ server_name.database_name.schema_name.
| database_name. [ schema_name ] .
| schema_name.
]
table_or_view_name
}
-- Syntax for Azure Synapse Analytics and Microsoft Fabric
[ WITH <common_table_expression> [ ,...n ] ]
DELETE [database_name . [ schema ] . | schema. ] table_name
FROM [database_name . [ schema ] . | schema. ] table_name
JOIN {<join_table_source>}[ ,...n ]
ON <join_condition>
[ WHERE <search_condition> ]
[ OPTION ( <query_options> [ ,...n ] ) ]
[; ]
<join_table_source> ::=
{
[ database_name . [ schema_name ] . | schema_name . ] table_or_view_name [ AS ] table_or_view_alias
[ <tablesample_clause>]
| derived_table [ AS ] table_alias [ ( column_alias [ ,...n ] ) ]
}
-- Syntax for Parallel Data Warehouse
DELETE
[ FROM [database_name . [ schema ] . | schema. ] table_name ]
[ WHERE <search_condition> ]
[ OPTION ( <query_options> [ ,...n ] ) ]
[; ]
Argumenty
WITH <common_table_expression>
Určuje dočasnou pojmenovanou sadu výsledků označovanou také jako běžný výraz tabulky definovanou v rámci oboru příkazu DELETE. Sada výsledků je odvozena z příkazu SELECT.
Běžné výrazy tabulky lze použít také s příkazy SELECT, INSERT, UPDATE a CREATE VIEW. Další informace najdete v tématu WITH common_table_expression (Transact-SQL).
TOP ( výraz) [ PERCENT ]
Určuje počet nebo procento náhodných řádků, které budou odstraněny.
výraz může být číslo nebo procento řádků. Řádky odkazované ve výrazu TOP použitém s příkazem INSERT, UPDATE nebo DELETE nejsou uspořádány v žádném pořadí. Další informace naleznete v tématu TOP (Transact-SQL).
OD
Volitelné klíčové slovo, které lze použít mezi klíčovým slovem DELETE a cílovým table_or_view_namenebo rowset_function_limited.
table_alias
Alias zadaný v klauzuli FROM table_source představující tabulku nebo zobrazení, ze kterého mají být řádky odstraněny.
server_name
platí pro: SQL Server 2008 (10.0.x) a novější.
Název serveru (pomocí názvu propojeného serveru nebo OPENDATASOURCE fungovat jako název serveru), na kterém se nachází tabulka nebo zobrazení. Pokud je zadán server_name, database_name a schema_name jsou povinné.
database_name
Název databáze.
schema_name
Název schématu, do kterého patří tabulka nebo zobrazení.
table_or_view_name
Název tabulky nebo zobrazení, ze kterého mají být řádky odebrány.
Proměnnou tabulky v rámci oboru lze také použít jako zdroj tabulky v příkazu DELETE.
Zobrazení, na které odkazuje table_or_view_name, musí být aktualizovatelné a odkazovat na přesně jednu základní tabulku v klauzuli FROM definice zobrazení. Další informace o aktualizovatelných zobrazeních naleznete v tématu CREATE VIEW (Transact-SQL).
rowset_function_limited
platí pro: SQL Server 2008 (10.0.x) a novější.
Funkce OPENQUERY nebo OPENROWSET, která podléhá možnostem zprostředkovatele.
WITH (<table_hint_limited> [... n] )
Určuje jeden nebo více tipů pro tabulku, které jsou povolené pro cílovou tabulku. Klíčové slovo WITH a závorky jsou povinné. NOLOCK a READUNCOMMITTED nejsou povoleny. Další informace o nápovědě k tabulce naleznete v tématu Rady tabulky (Transact-SQL).
<OUTPUT_Clause>
Vrátí odstraněné řádky nebo výrazy založené na nich jako součást operace DELETE. Klauzule OUTPUT není podporována v žádných příkazech DML, které cílí na zobrazení nebo vzdálené tabulky. Další informace o argumentech a chování této klauzule naleznete v tématu OUTPUT – klauzule (Transact-SQL).
FROM table_source
Určuje další klauzuli FROM. Toto rozšíření Transact-SQL delete umožňuje zadat data z <table_source> a odstranit odpovídající řádky z tabulky v první klauzuli FROM.
Toto rozšíření, které určuje spojení, lze místo poddotazu v klauzuli WHERE použít k identifikaci řádků, které se mají odebrat.
Další informace najdete v tématu FROM (Transact-SQL).
KDE
Určuje podmínky použité k omezení počtu odstraněných řádků. Pokud klauzule WHERE není zadána, delete odebere všechny řádky z tabulky.
Existují dvě formy operací odstranění na základě toho, co je zadáno v klauzuli WHERE:
Prohledané odstranění určují podmínku hledání, která opravní řádky k odstranění. Například hodnota WHERE column_name = .
Poziční odstranění používá klauzuli CURRENT OF k určení kurzoru. Operace odstranění probíhá na aktuální pozici kurzoru. To může být přesnější než hledaný příkaz DELETE, který používá klauzuli WHERE search_condition kvalifikovat řádky, které se mají odstranit. Hledaný příkaz DELETE odstraní více řádků, pokud podmínka hledání jednoznačně neidentifikuje jeden řádek.
<search_condition>
Určuje omezující podmínky pro odstranění řádků. Počet predikátů, které lze zahrnout do podmínky hledání, není nijak omezený. Další informace najdete v tématu podmínky hledání (Transact-SQL).
AKTUÁLNÍ
Určuje, že delete se provádí na aktuální pozici zadaného kurzoru.
GLOBÁLNÍ
Určuje, že cursor_name odkazuje na globální kurzor.
cursor_name
Je název otevřeného kurzoru, ze kterého se načítá. Pokud existuje globální i místní kurzor s názvem cursor_name existuje, odkazuje tento argument na globální kurzor, pokud je zadána funkce GLOBAL; v opačném případě odkazuje na místní kurzor. Kurzor musí povolit aktualizace.
cursor_variable_name
Název proměnné kurzoru. Proměnná kurzoru musí odkazovat na kurzor, který umožňuje aktualizace.
OPTION (<query_hint> [ ,... n] )
Klíčová slova označující, které rady optimalizátoru se používají k přizpůsobení způsobu, jakým databázový stroj zpracovává příkaz. Další informace najdete v tématu Nápovědy k dotazům (Transact-SQL).
Osvědčené postupy
Pokud chcete odstranit všechny řádky v tabulce, použijte TRUNCATE TABLE
.
TRUNCATE TABLE
je rychlejší než DELETE a používá méně prostředků systémového a transakčního protokolu.
TRUNCATE TABLE
má omezení, například tabulka se nemůže účastnit replikace. Další informace najdete v tématu TRUNCATE TABLE (Transact-SQL)
Pomocí funkce @@ROWCOUNT
vrátíte do klientské aplikace počet odstraněných řádků. Další informace naleznete v tématu @@ROWCOUNT (Transact-SQL).
Zpracování chyb
Zpracování chyb pro příkaz DELETE můžete implementovat zadáním příkazu v TRY...CATCH
konstruktoru.
Příkaz DELETE
může selhat, pokud porušuje trigger nebo se pokusí odebrat řádek odkazovaný daty v jiné tabulce s omezením FOREIGN KEY
. Pokud DELETE
odebere více řádků a některý z odebraných řádků porušuje aktivační událost nebo omezení, příkaz se zruší, vrátí se chyba a neodebere se žádné řádky.
Když příkaz DELETE při vyhodnocování výrazu narazí na aritmetickou chybu (přetečení, dělení nulou nebo chybou domény), databázový stroj tyto chyby zpracuje, jako by byl nastavený SET ARITHABORT
ZAPNUTO. Zbytek dávky se zruší a vrátí se chybová zpráva.
Interoperabilita
DELETE lze použít v těle uživatelem definované funkce, pokud je objekt změněn proměnnou tabulky.
Když odstraníte řádek obsahující sloupec FILESTREAM, odstraníte také jeho základní soubory systému souborů. Základní soubory se odeberou uvolňováním paměti FILESTREAM. Další informace naleznete v tématu Access FILESTREAM Data s jazykem Transact-SQL.
Klauzuli FROM nelze zadat v příkazu DELETE, který odkazuje přímo nebo nepřímo na zobrazení s INSTEAD OF
triggerem definovaným v něm. Další informace o triggerech MÍSTO triggerů najdete v tématu CREATE TRIGGER (Transact-SQL).
V současné době nelze klauzuli FROM zadat v příkazu DELETE ve skladu v Microsoft Fabric.
Omezení a omezení
Při použití TOP
s DELETE
nejsou odkazované řádky uspořádány v žádném pořadí a klauzule ORDER BY
nelze přímo zadat v tomto příkazu. Pokud potřebujete pomocí funkce TOP odstranit řádky ve smysluplné chronologickém pořadí, musíte použít TOP
společně s klauzulí ORDER BY
v příkazu subselect. Podívejte se na část Příklady, která následuje v tomto tématu.
TOP
nelze použít v příkazu DELETE
pro dělené zobrazení.
Chování uzamčení
Ve výchozím nastavení příkaz DELETE
vždy získá zámek záměru (IX
) objektu tabulky a stránky, které upraví, výhradní (X
) uzamkne na řádcích, které upraví, a uchovává tyto zámky, dokud transakce nebude dokončena.
S výhradním záměrem (IX
) zámek, žádné jiné transakce nemohou upravovat stejnou sadu dat; Operace čtení se můžou provádět pouze s použitím nápovědy NOLOCK nebo s nekomprimovanými úrovněmi izolace. Nápovědy k tabulce můžete zadat tak, aby po dobu trvání příkazu DELETE přepsaly toto výchozí chování zadáním jiné metody uzamčení. Doporučujeme však, aby se rady používaly pouze jako poslední možnost zkušenými vývojáři a správci databází. Další informace naleznete v tématu Nápovědy k tabulce (Transact-SQL).
Když se řádky odstraní z haldy, databázový stroj může pro operaci použít uzamčení řádku nebo stránky. V důsledku toho zůstanou stránky vyprázdněné operací odstranění přiděleny haldě. Pokud nejsou uvolněny prázdné stránky, přidružené místo nelze znovu použít jinými objekty v databázi.
Pokud chcete odstranit řádky v haldě a uvolnit stránky, použijte jednu z následujících metod.
V příkazu
DELETE
zadejteTABLOCK
nápovědu. PoužitíTABLOCK
nápovědy způsobí, že operace odstranění provede zámek IX na objektu místo řádku nebo zámku stránky. Tím umožníte uvolnění stránek. Další informace o nápovědě kTABLOCK
naleznete v tématu Nápovědy k tabulce (Transact-SQL).Pokud chcete odstranit všechny řádky z tabulky, použijte
TRUNCATE TABLE
.Před odstraněním řádků vytvořte na haldě clusterovaný index. Clusterovaný index můžete po odstranění řádků odstranit. Tato metoda je časově náročnější než předchozí metody a používá více dočasných prostředků.
Poznámka
Prázdné stránky lze kdykoli odebrat z haldy pomocí příkazu ALTER TABLE <table_name> REBUILD
.
Pokud je povolené optimalizované uzamčení, některé aspekty chování uzamčení DELETE
se změní. Například exkluzivní zámky (X
) se neudržují, dokud se transakce nedokončí. Další informace naleznete v tématu Optimalizované uzamčení.
Chování protokolování
Příkaz DELETE je vždy plně protokolován.
Bezpečnost
Dovolení
DELETE
oprávnění jsou vyžadována v cílové tabulce.
SELECT
oprávnění jsou vyžadována také v případě, že příkaz obsahuje klauzuli WHERE.
Oprávnění DELETE jsou výchozí pro členy sysadmin
pevné role serveru, db_owner
a db_datawriter
pevné databázové role a vlastníka tabulky. Členové rolí sysadmin
, db_owner
a db_securityadmin
a vlastník tabulky může přenést oprávnění jiným uživatelům.
Příklady
Kategorie | Doporučené prvky syntaxe |
---|---|
základní syntaxe | VYMAZAT |
omezení odstraněných řádků | WHERE * FROM * kurzor * * |
Odstranění řádků ze vzdálené tabulky | Propojený server * Funkce sady řádků OPENQUERY * Funkce sady řádků OPENDATASOURCE |
Zachycení výsledků příkazu DELETE | Klauzule OUTPUT |
Základní syntaxe
Příklady v této části ukazují základní funkce příkazu DELETE pomocí minimální požadované syntaxe.
A. Použití delete bez klauzule WHERE
Následující příklad odstraní všechny řádky z tabulky SalesPersonQuotaHistory
v databázi AdventureWorks2022, protože klauzule WHERE se nepoužívá k omezení počtu odstraněných řádků.
DELETE FROM Sales.SalesPersonQuotaHistory;
GO
Omezení odstraněných řádků
Příklady v této části ukazují, jak omezit počet řádků, které budou odstraněny.
B. Použití klauzule WHERE k odstranění sady řádků
Následující příklad odstraní všechny řádky z tabulky ProductCostHistory
v databázi AdventureWorks2022, ve které je hodnota ve sloupci StandardCost
větší než 1000.00
.
DELETE FROM Production.ProductCostHistory
WHERE StandardCost > 1000.00;
GO
Následující příklad ukazuje složitější klauzuli WHERE. Klauzule WHERE definuje dvě podmínky, které musí být splněny, aby bylo možné určit řádky k odstranění. Hodnota ve sloupci StandardCost
musí být mezi 12.00
a 14.00
a hodnota ve sloupci SellEndDate
musí být null. Příklad také vytiskne hodnotu z funkce @@ROWCOUNT, která vrátí počet odstraněných řádků.
DELETE Production.ProductCostHistory
WHERE StandardCost BETWEEN 12.00 AND 14.00
AND EndDate IS NULL;
PRINT 'Number of rows deleted is ' + CAST(@@ROWCOUNT as char(3));
C. Určení řádku k odstranění pomocí kurzoru
Následující příklad odstraní jeden řádek z tabulky EmployeePayHistory
v databázi AdventureWorks2022 pomocí kurzoru s názvem complex_cursor
. Operace odstranění ovlivňuje pouze jeden řádek, který se právě načítá z kurzoru.
DECLARE complex_cursor CURSOR FOR
SELECT a.BusinessEntityID
FROM HumanResources.EmployeePayHistory AS a
WHERE RateChangeDate <>
(SELECT MAX(RateChangeDate)
FROM HumanResources.EmployeePayHistory AS b
WHERE a.BusinessEntityID = b.BusinessEntityID) ;
OPEN complex_cursor;
FETCH FROM complex_cursor;
DELETE FROM HumanResources.EmployeePayHistory
WHERE CURRENT OF complex_cursor;
CLOSE complex_cursor;
DEALLOCATE complex_cursor;
GO
D. Použití spojení a poddotazů k datům v jedné tabulce k odstranění řádků v jiné tabulce
Následující příklady ukazují dva způsoby odstranění řádků v jedné tabulce na základě dat v jiné tabulce. V obou příkladech se řádky z tabulky SalesPersonQuotaHistory
v databázi AdventureWorks2022 odstraní na základě prodeje od roku do data uloženého v tabulce SalesPerson
. První příkaz DELETE
ukazuje řešení poddotazů kompatibilní se standardem ISO a druhý příkaz DELETE
ukazuje rozšíření Transact-SQL FROM pro spojení obou tabulek.
-- SQL-2003 Standard subquery
DELETE FROM Sales.SalesPersonQuotaHistory
WHERE BusinessEntityID IN
(SELECT BusinessEntityID
FROM Sales.SalesPerson
WHERE SalesYTD > 2500000.00);
GO
-- Transact-SQL extension
DELETE FROM Sales.SalesPersonQuotaHistory
FROM Sales.SalesPersonQuotaHistory AS spqh
INNER JOIN Sales.SalesPerson AS sp
ON spqh.BusinessEntityID = sp.BusinessEntityID
WHERE sp.SalesYTD > 2500000.00;
GO
-- No need to mention target table more than once.
DELETE spqh
FROM
Sales.SalesPersonQuotaHistory AS spqh
INNER JOIN Sales.SalesPerson AS sp
ON spqh.BusinessEntityID = sp.BusinessEntityID
WHERE sp.SalesYTD > 2500000.00;
E. Omezení počtu odstraněných řádků pomocí funkce TOP
Při použití klauzule TOP (n) s delete se operace delete provádí s náhodným výběrem n počtu řádků. Následující příklad odstraní 20
náhodné řádky z tabulky PurchaseOrderDetail
v databázi AdventureWorks2022 s termíny splnění, které jsou starší než 1. července 2006.
DELETE TOP (20)
FROM Purchasing.PurchaseOrderDetail
WHERE DueDate < '20020701';
GO
Pokud k odstranění řádků ve smysluplné chronologickém pořadí potřebujete použít top společně s order BY v příkazu dílčího výběru. Následující dotaz odstraní 10 řádků tabulky PurchaseOrderDetail
, které mají nejstarší termíny splnění. Pokud chcete zajistit, aby se odstranilo pouze 10 řádků, je sloupec zadaný v příkazu dílčího výběru (PurchaseOrderID
) primárním klíčem tabulky. Použití jiného sloupce v příkazu dílčího výběru může vést k odstranění více než 10 řádků, pokud zadaný sloupec obsahuje duplicitní hodnoty.
DELETE FROM Purchasing.PurchaseOrderDetail
WHERE PurchaseOrderDetailID IN
(SELECT TOP 10 PurchaseOrderDetailID
FROM Purchasing.PurchaseOrderDetail
ORDER BY DueDate ASC);
GO
Odstranění řádků ze vzdálené tabulky
Příklady v této části ukazují, jak odstranit řádky ze vzdálené tabulky pomocí propojeného serveru nebo funkce sady řádků odkazovat na vzdálenou tabulku. Vzdálená tabulka existuje na jiném serveru nebo instanci SQL Serveru.
platí pro: SQL Server 2008 (10.0.x) a novější.
F. Odstranění dat ze vzdálené tabulky pomocí propojeného serveru
Následující příklad odstraní řádky ze vzdálené tabulky. Příklad začíná vytvořením propojení se vzdáleným zdrojem dat pomocí sp_addlinkedserver. Název propojeného serveru MyLinkServer
je pak určen jako součást názvu objektu čtyřdílné ve formuláři server.catalog.schema.object.
USE master;
GO
-- Create a link to the remote data source.
-- Specify a valid server name for @datasrc as 'server_name' or 'server_name\instance_name'.
EXEC sp_addlinkedserver @server = N'MyLinkServer',
@srvproduct = N' ',
@provider = N'SQLNCLI',
@datasrc = N'server_name',
@catalog = N'AdventureWorks2022';
GO
-- Specify the remote data source using a four-part name
-- in the form linked_server.catalog.schema.object.
DELETE MyLinkServer.AdventureWorks2022.HumanResources.Department
WHERE DepartmentID > 16;
GO
G. Odstranění dat ze vzdálené tabulky pomocí funkce OPENQUERY
Následující příklad odstraní řádky ze vzdálené tabulky zadáním OPENQUERY funkce sady řádků. V tomto příkladu se používá název propojeného serveru vytvořený v předchozím příkladu.
DELETE OPENQUERY (MyLinkServer, 'SELECT Name, GroupName
FROM AdventureWorks2022.HumanResources.Department
WHERE DepartmentID = 18');
GO
H. Odstranění dat ze vzdálené tabulky pomocí funkce OPENDATASOURCE
Následující příklad odstraní řádky ze vzdálené tabulky zadáním OPENDATASOURCE sadě řádků. Zadejte platný název serveru pro zdroj dat pomocí formátu server_name nebo server_name\instance_name.
DELETE FROM OPENDATASOURCE('SQLNCLI',
'Data Source= <server_name>; Integrated Security=SSPI')
.AdventureWorks2022.HumanResources.Department
WHERE DepartmentID = 17;
Zaznamenání výsledků příkazu DELETE
Já. Použití delete s klauzulí OUTPUT
Následující příklad ukazuje, jak uložit výsledky příkazu DELETE
do proměnné tabulky v databázi AdventureWorks2022.
DELETE Sales.ShoppingCartItem
OUTPUT DELETED.*
WHERE ShoppingCartID = 20621;
--Verify the rows in the table matching the WHERE clause have been deleted.
SELECT COUNT(*) AS [Rows in Table]
FROM Sales.ShoppingCartItem
WHERE ShoppingCartID = 20621;
GO
J. Použití výstupu s <from_table_name> v příkazu DELETE
Následující příklad odstraní řádky v tabulce ProductProductPhoto
v databázi AdventureWorks2022 na základě kritérií hledání definovaných v klauzuli FROM
příkazu DELETE
. Klauzule OUTPUT
vrátí sloupce z tabulky, která se odstraňuje, DELETED.ProductID
, DELETED.ProductPhotoID
a sloupce z tabulky Product
. Používá se v klauzuli FROM
k určení řádků, které se mají odstranit.
DECLARE @MyTableVar table (
ProductID int NOT NULL,
ProductName nvarchar(50)NOT NULL,
ProductModelID int NOT NULL,
PhotoID int NOT NULL);
DELETE Production.ProductProductPhoto
OUTPUT DELETED.ProductID,
p.Name,
p.ProductModelID,
DELETED.ProductPhotoID
INTO @MyTableVar
FROM Production.ProductProductPhoto AS ph
JOIN Production.Product as p
ON ph.ProductID = p.ProductID
WHERE p.ProductModelID BETWEEN 120 and 130;
--Display the results of the table variable.
SELECT ProductID, ProductName, ProductModelID, PhotoID
FROM @MyTableVar
ORDER BY ProductModelID;
GO
Příklady: Azure Synapse Analytics a Analytický platformový systém (PDW)
K. Odstranění všech řádků z tabulky
Následující příklad odstraní všechny řádky z tabulky Table1
, protože klauzule WHERE se nepoužívá k omezení počtu odstraněných řádků.
DELETE FROM Table1;
L. ODSTRANĚNÍ sady řádků z tabulky
Následující příklad odstraní všechny řádky z tabulky Table1
, které mají hodnotu větší než 1000,00 ve sloupci StandardCost
.
DELETE FROM Table1
WHERE StandardCost > 1000.00;
M. Použití LABEL s příkazem DELETE
Následující příklad používá popisek s příkazem DELETE.
DELETE FROM Table1
OPTION ( LABEL = N'label1' );
N. Použití popisku a nápovědy dotazu s příkazem DELETE
Tento dotaz zobrazuje základní syntaxi pro použití nápovědy ke spojení dotazu pomocí příkazu DELETE. Další informace o tipech spojení a o tom, jak použít klauzuli OPTION, naleznete v tématu OPTION – klauzule (Transact-SQL).
-- Uses AdventureWorks
DELETE FROM dbo.FactInternetSales
WHERE ProductKey IN (
SELECT T1.ProductKey FROM dbo.DimProduct T1
JOIN dbo.DimProductSubcategory T2
ON T1.ProductSubcategoryKey = T2.ProductSubcategoryKey
WHERE T2.EnglishProductSubcategoryName = 'Road Bikes' )
OPTION ( LABEL = N'CustomJoin', HASH JOIN ) ;
O. Odstranění pomocí klauzule WHERE
Tento dotaz ukazuje, jak odstranit pomocí klauzule WHERE a ne pomocí klauzule FROM.
DELETE tableA WHERE EXISTS (
SELECT TOP 1 1 FROM tableB tb WHERE tb.col1 = tableA.col1
)
P. Odstranění na základě výsledku spojení s jinou tabulkou
Tento příklad ukazuje, jak odstranit z tabulky na základě výsledku spojení s jinou tabulkou.
CREATE TABLE dbo.Table1
(ColA int NOT NULL, ColB decimal(10,3) NOT NULL);
GO
CREATE TABLE dbo.Table2
(ColA int PRIMARY KEY NOT NULL, ColB decimal(10,3) NOT NULL);
GO
INSERT INTO dbo.Table1 VALUES(1, 10.0), (1, 20.0);
INSERT INTO dbo.Table2 VALUES(1, 0.0);
GO
DELETE dbo.Table2
FROM dbo.Table2
INNER JOIN dbo.Table1
ON (dbo.Table2.ColA = dbo.Table1.ColA)
WHERE dbo.Table2.ColA = 1;
Viz také
CREATE TRIGGER (Transact-SQL)
INSERT (Transact-SQL)
SELECT (Transact-SQL)
TRUNCATE TABLE (Transact-SQL)
UPDATE (Transact-SQL)
WITH common_table_expression (Transact-SQL)
@@ROWCOUNT (Transact-SQL)