Sådan afkortes et felt i SQL


Bedste svar

Først og fremmest “DET ER IKKE MULIGT AT TRUNKERE ET FELT”.

Afkort er en koncept i databasen, som ikke ligner en sletning eller en opdatering. Hovedkonceptet med Truncate er, hvordan metadata bag scenen håndteres. Hvis du arbejder med Oracle, kan du studere et koncept kaldet “High Water Mark” . Du kan finde det meget detaljeret i Burlesons blog her.

I SQL-server Hvis du tænker på en primær nøgle med automatisk stigningsværdi, skal du trunke indstille det hele til basen. Jeg mener den startværdi, der er defineret af dig eller standard 1. Så dybest set, hvilke operationer den udfører i bagenden er mere specifik for metadata og mere specifik for egenskab for tabelniveau i en database.

Nu, hvis du ville betyde, at du vil rense en kolonne, du kan bare affyre en opdatering med NULL for den pågældende kolonne, eller du kan opdatere med .

Update TABLE

Set Column = NULL/’’

Where 1 =1

Jeg nævnte dette sidst hvor klausul, fordi mange databaser nu mange dage ikke giver dig mulighed for at opdatere hele kolonnen uden en hvor klausul. I mySql kaldes det som “Flag til sikker opdatering” . Men for at være mere specifik skal du altid opdatere med NULL i stedet for for at følge en god praksis

Svar

DELETE er en logget handling på en per række. Dette betyder, at sletningen af ​​hver række registreres og fjernes fysisk. Du kan slette enhver række, der ikke indebærer en overtrædelse af begrænsningen, mens du lader den fremmede nøgle eller andre begrænsninger være på plads.

TRUNCATE er en logget handling, men på en anden måde. TRUNCATE logger dealplaceringen på de informationssider, hvor der findes information. Deallocation af informationssider betyder, at dine informationsrækker stadig eksisterer på informationssiderne, men udvidelserne er markeret som tomme til genbrug. Dette er, hvad der gør TRUNCATE til en hurtigere operation til at udføre over SLET. Kan ikke afkorte en tabel, der har udenlandske nøglebegrænsninger. Du skal fjerne begrænsningerne, afkorte tabellen og anvende begrænsningerne igen.

TRUNCATE nulstiller alle identitetskolonner til initialiseringen af ​​standardværdien. Dette betyder, at hvis du har en tabel med en identitetskolonne og har 264 rækker med en frøværdi på 1, vil hans seneste post have værdien 264 (forudsat at du startede med værdi 1) i kolonnerne i din identitet. Efter afkortning af din tabel, når du indsætter en ny post i den tomme tabel, vil identitetskolonnen have en værdi på 1. DELETE vandt “t. I samme scenarie, hvis den aktuelle række indsættes en ny række i den tomme tabel har identitetskolonnen en værdi på 265.

Hvorfor afkortes er hurtigere end Slet?

Årsag: I skrivning for at slette al information kopieres til rollback-tabellområdet og derefter udføres sletning. Så når du skriver ROLLBACK efter at du har slettet en tabel, kan du få informationen tilbage (metoden får den til tempoet i Rollback Tables). teknik vil tage tid, men når du bruger TRUNCATE, fjerner den information direkte uden at kopiere den til tilbagevendende tabelplads. Så TRUNCATE er hurtigere. To gange afkortet kan du ikke få oplysningerne tilbage.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *