SqlSkull

SQL Server-TULOSTUSLAUSEKE palauttaa jokaisen rivin arvot, joihin insertti, päivitys tai poisto vaikuttivat.

Tulostuslauseke palauttaa kopion tiedoista, jotka voidaan lisätä erilliseen taulukkoon kyselyn suorittamisen aikana.

tätä lauseketta käytetään yleisimmin pitämään kirjaa tietojen muutoksista taulukossa tilintarkastusta varten.

TULOSTUSLAUSEKE antaa pääsyn kahteen virtuaalitaulukkoon kuten alla on esitetty.

  1. Lisätty, joka sisältää uudet rivit (Lisää tai päivitä)
  2. poistettu, joka sisältää vanhan kopion riveistä (tyhjä lisää varten)

TULOSTUSLAUSEKE voi käyttää kaikkia taulukon sarakkeita, nekään eivät kuulu Insert-lausekkeeseen .

syntaksi

---- for insertINSERT INTO tablename OUTPUT inserted . *INTO @output_tablenameVALUES (col_value1 ,col_value2 ,..) ---for delete DELETE FROM tablenameOUTPUT deleted.* INTO @output_tablename WHERE Condition 
katsotaan esimerkki , luodaan ensin taulukko, jonka nimi on kohde .
CREATE TABLE dbo.Item (ItemId Int identity(1,1),ItemName Varchar(20),ItemPurchasedDate Datetime)

käyttämällä Ulostulolauseketta , jossa lisätään lauseke

, lisätäksesi tulostuslausekkeen tuloksen taulukkoon, ilmoita ensin taulukkomuuttuja tallentaaksesi tulostuslausekkeen tuloksen ja tallenna tulos tulostuslausekkeen syntaksilla taulukkomuuttujaan .

lisättyjen tietueiden avaamiseen Tulostuslauseke käyttää lisättyä virtuaalitaulukkoa, joka sisältää uudet rivit.

seuraavassa lauseessa lisätään yksi tietue Kohdetaulukkoon ja käytetään tulostuslauseketta tallentamaan nämä tietueet taulukkomuuttujaksi @insert_log kuten alla on annettu

DECLARE @insert_log TABLE(ItemId Int, ItemName Varchar(20), ItemPurchasedDate Datetime )INSERT INTO dbo.Item OUTPUT inserted.ItemId, inserted.ItemName, inserted.ItemPurchasedDateINTO @insert_logVALUES ('Item1' , Getdate()) SELECT * FROM dbo.Item;SELECT * FROM @insert_log ;

kuten näet nimiketaulukon ja taulukkomuuttujan tulosteen, kun nimiketaulukkoon lisätään uusia tietueita, erittelytunnus ei ole osa lisäyslauseketta . Voit kuitenkin käyttää TULOSTUSLAUSEKKEEN Eremid-saraketta.

käyttämällä Lähtökalusea, jossa on päivitetyt tiedot

, voit käyttää joko lisättyä tai poistettua virtuaalista taulukkoa, jossa on tulostuslauseke vaatimuksesi mukaan.

Jos haluat käyttää vanhoja arvoja, jotka olivat ennen uuden arvon päivittämistä, voit käyttää poistettua virtuaalitaulukkoa ja jos haluat käyttää uusia päivitettyjä arvoja, voit käyttää lisättyä virtuaalitaulukkoa Tulostuslausekkeella.

seuraavassa lauseessa päivitämme Nimiarvon Nimiketaulukkoon ja tallennamme tietueiden vanhat arvot tulostuslausekkeen avulla taulukkomuuttujaan @update_log.

koska haluamme käyttää vanhoja tietueita, käytämme poistettuja virtuaalitauluja.

DECLARE @update_log TABLE( ItemId int, ItemName Varchar(20), ItemPurchasedDate Datetime )UPDATE dbo.Item SET ItemName ='Item2'OUTPUT deleted.ItemId, deleted.ItemName, deleted.ItemPurchasedDateINTO @update_logWHERE ItemId =1SELECT * FROM dbo.Item;SELECT * FROM @update_log

kuten näkyy, tässä on kolme tuotosta seuraavasti

1: se on taulukon tuotos ennen tietueiden päivittämistä.

2: se on taulukon tuotos tietueiden päivittämisen jälkeen.

3: taulukkomuuttujan palauttama tuotos pitää sisällään Vanhat tietueiden arvot, jotka olivat ennen päivitystä.

Jos haluat käyttää uusia tietueita, voit käyttää lisättyä virtuaalista taulukkoa poistettujen sijasta.

Tulostuslauseke, jossa poistetaan lauseke

seuraava lauseke käyttää delete query-kyselyä poistaakseen tietueen ItemId= 1 Nimiketaulukosta ja tallentaakseen poistetut tietueet taulukkomuuttujaan Tulostuskalusen avulla .

poistettujen tietueiden tulostuslausekkeessa käytetään poistettua virtuaalitaulukkoa, joka sisältää rivien vanhan kopion.

DECLARE @delete_log TABLE( ItemId Int, ItemName Varchar(20), ItemPurchasedDate Datetime )DELETE FROM dbo.Item OUTPUT deleted.ItemId, deleted.ItemName, deleted.ItemPurchasedDateINTO @delete_logWHERE ItemId =1SELECT * FROM dbo.Item;SELECT * FROM @delete_log

kuten näkyy , Nimiketaulukossa ei ole tietoa, koska se on poistettu, mutta tulostuslauseke lisää poistetut tietueet taulukkomuuttujaksi @delete_log, joka on erittäin hyödyllistä pitää kirjaa poistetut tietueet.

suositellaan

SQL Server Temporal Tables

822 kokonaiskuvaa, 8 katselukertaa tänään

Related Posts

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *