Кіріспе
SQL-де TRUNCATE TABLE командасы – деректерді басқару тілінің (DML) операциясы болып табылады, ол триггерлік әрекетті тудырмай, кестедегі барлық қатарларды жояды. Бұл операцияның нәтижесі кестедегі барлық деректерді жылдам жоюға мүмкіндік береді, әдетте, тұтастықты сақтау механизмдерінің бірнешеуін айналып өтеді. Бұл команда SQL:2008 стандартында ресми түрде енгізілген, F200 – «TRUNCATE TABLE statement» деген опциялық мүмкіндік ретінде. TRUNCATE TABLE кестеден барлық қатарларды жояды, бірақ кесте құрылымы, оның бағандары, шектеулері, индекстері және т.б. сақталады. Кесте анықтамасын деректерімен бірге жою үшін DROP TABLE командасын пайдаланыңыз. TRUNCATE TABLE mytable командасы логикалық тұрғыдан (физикалық тұрғыдан емес) WHERE шартсыз DELETE FROM mytable командасына тең. TRUNCATE TABLE мен DELETE командаларын келесі ерекшеліктер ажыратады: Oracle деректер базасында TRUNCATE командасынан бұрын және кейін автоматты түрде коммит операциясы орындалады. (Бұл MySQL-де де транзакциялық сақтау қозғалтқышы қолданылғанда болуы мүмкін.) Әдетте, TRUNCATE TABLE кестеде пайдаланылатын дерек беттерін босату арқылы кестедегі барлық жазбаларды жылдам жояды. Бұл жоюларды тіркеуге жұмсалатын ресурстарды, сондай-ақ қолданылатын құлыптардың санын азайтады. Осылай жойылған жазбаларды кері қайтару операциясы арқылы қалпына келтіру мүмкін емес. Бұл ережеден екі ерекше жағдай бар: PostgreSQL және Microsoft SQL Server жүйелерінде TRUNCATE TABLE командаларын транзакциялық түрде орындауға немесе кері қайтаруға болады. TRUNCATE TABLE командасында WHERE шартты көрсету мүмкін емес. TRUNCATE TABLE командасын шеткі кілт арқылы қысқартылатын кестеге сілтеме жасалғанда қолдануға болмайды, себебі TRUNCATE TABLE командалары триггерлерді іске қоспайды. Бұл деректердің сәйкессіздігіне алып келуі мүмкін, өйткені ON DELETE/ON UPDATE триггерлері іске қосылмайды. Кейбір компьютерлік жүйелерде TRUNCATE TABLE командасы Identity бағанының санауын бастапқы мәніне қайтарады. Microsoft SQL Server 2000 және одан кейінгі нұсқаларында толық қалпына келтіру режимінде деректер базасындағы барлық өзгерістер тіркеледі, сондықтан TRUNCATE TABLE командаларын журналдық жіберуге қатысты кестелер үшін қолдануға болады.
In the Oracle Database, TRUNCATE is implicitly preceded and followed by a commit operation. (This may also be the case in MySQL, when using a transactional storage engine.) Typically, TRUNCATE TABLE quickly deletes all records in a table by deallocating the data pages used by the table. This reduces the resource overhead of logging the deletions, as well as the number of locks acquired. Records removed this way cannot be restored in a rollback operation. Two notable exceptions to this rule are the implementations found in PostgreSQL and Microsoft SQL Server, both of which allow TRUNCATE TABLE statements to be committed or rolled back transactionally. It is not possible to specify a WHERE clause in a TRUNCATE TABLE statement. TRUNCATE TABLE cannot be used when a foreign key references the table to be truncated, since TRUNCATE TABLE statements do not fire triggers. This could result in inconsistent data because ON DELETE/ON UPDATE triggers would not fire. In some computer systems, TRUNCATE TABLE resets the count of an Identity column back to the identity's seed. In Microsoft SQL Server 2000 and beyond in full recovery mode, every change to the database is logged, so TRUNCATE TABLE statements can be used for tables involved in log shipping.