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

Bagaimana saya bisa mengatur identity_insert pada nama tabel yang diteruskan sebagai variabel

Hanya untuk mencadangkan jawaban Brad yang diberikan dalam komentar, inilah MVCE untuk melakukan seluruh urutan penyisipan dalam satu permintaan dinamis. Sesuai komentar Kris, pastikan nama basis data terdaftar putih, karena kueri rentan terhadap SqlInjection (sayangnya, nama basis data tidak dapat diparameterisasi dalam sql dinamis melalui sp_executesql )

Diketahui:

CREATE TABLE TableName
(
    ID INT IDENTITY(1,1)
);

Satu batch dapat dieksekusi:

DECLARE @strDBName VARCHAR(100) = 'MyDatabase';
Declare @Query Varchar(MAX)
SET @Query = 'SET IDENTITY_INSERT '+ @strDBName +'..TableName ON; '
SET @Query = @Query + 'INSERT INTO '+ @strDBName 
 +'..[TableName](ID) SELECT COALESCE(MAX(ID), 0)+1 FROM '+ @strDBName +'..TableName; '
SET @Query = @Query + 'SET IDENTITY_INSERT '+ @strDBName +'..TableName OFF;'
EXEC(@Query)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server:buat cadangan semua database

  2. Perbaiki SQL Database Recovery Pending Access Masalah Ditolak

  3. Pengumpulan Data Otomatis Perubahan Skema Basis Data di MS SQL Server

  4. Cara membuat kolom case sensitif di sql 2005 atau 2008

  5. Apakah mungkin untuk menolak akses ke SQL Server dari program tertentu?