Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Bagaimana Anda memotong semua tabel dalam database menggunakan TSQL?

Saat menangani penghapusan data dari tabel yang memiliki hubungan kunci asing - yang pada dasarnya adalah kasus dengan basis data yang dirancang dengan benar - kita dapat menonaktifkan semua batasan, menghapus semua data, lalu mengaktifkan kembali batasan

-- disable all constraints
EXEC sp_MSForEachTable "ALTER TABLE ? NOCHECK CONSTRAINT all"

-- delete data in all tables
EXEC sp_MSForEachTable "DELETE FROM ?"

-- enable all constraints
exec sp_MSForEachTable "ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"

Selengkapnya tentang menonaktifkan batasan dan pemicu di sini

jika beberapa tabel memiliki kolom identitas, kami mungkin ingin melakukan seed ulang

EXEC sp_MSForEachTable "DBCC CHECKIDENT ( '?', RESEED, 0)"

Perhatikan bahwa perilaku RESEED berbeda antara tabel baru, dan tabel yang telah memasukkan beberapa data sebelumnya dari BOL:

DBCC CHECKIDENT ('table_name', RESEED, newReseedValue)

Nilai identitas saat ini disetel ke newReseedValue. Jika tidak ada baris yang dimasukkan ke tabel sejak dibuat, baris pertama yang dimasukkan setelah menjalankan DBCC CHECKIDENT akan menggunakan newReseedValue sebagai identitas. Jika tidak, baris berikutnya yang disisipkan akan menggunakan newReseedValue + 1. Jika nilai newReseedValue kurang dari nilai maksimum pada kolom identitas, pesan kesalahan 2627 akan dibuat pada referensi berikutnya ke tabel.

Terima kasih kepada Robert karena menunjukkan fakta bahwa penonaktifan batasan tidak memungkinkan untuk menggunakan truncate, batasan harus dihilangkan, dan kemudian dibuat ulang



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. LINQ ke SQL Ambil tanpa Loncat Penyebab Beberapa Pernyataan SQL

  2. Optimalisasi kueri SQL:Praktik terbaik untuk meningkatkan kinerja

  3. Kueri Select SUM saya mengembalikan nol. Itu harus mengembalikan 0

  4. Karakter Non-Angka yang Mengembalikan Positif saat menggunakan ISNUMERIC() di SQL Server

  5. Dapatkan hari pertama dalam seminggu di SQL Server