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

2 Cara Membuat Tabel Jika Tidak Ada di SQL Server

T-SQL tidak menyertakan IF NOT EXISTS klausa dengan CREATE TABLE pernyataan, seperti yang dilakukan beberapa DBMS lainnya.

Oleh karena itu, jika kita ingin memeriksa keberadaan tabel sebelum kita membuatnya di SQL Server, kita perlu menggunakan metode lain.

Opsi 1:Periksa ID Objek

Di SQL Server, kita dapat menggunakan OBJECT_ID() fungsi untuk memeriksa keberadaan tabel sebelum kita mencoba membuatnya:

IF OBJECT_ID(N'dbo.t1', N'U') IS NULL
CREATE TABLE dbo.t1 (
    c1 int,
    c2 varchar(10)
    );
GO

Contoh di atas memeriksa ID objek untuk dbo.t1 tabel.

Argumen kedua untuk OBJECT_ID() menentukan jenis objek yang kita cari. Dalam hal ini kami menggunakan U , yang untuk “tabel yang ditentukan pengguna”.

OBJECT_ID() mengembalikan nomor identifikasi objek database dari objek cakupan skema. Jika objek tidak ada, atau jika Anda tidak memiliki akses ke sana, fungsi mengembalikan NULL. Oleh karena itu, kita dapat memeriksa nilai NULL, dan hanya membuat tabel jika fungsi ini mengembalikan NULL.

Kita dapat menggunakan OBJECT_ID() fungsi untuk memeriksa ID objek tabel setelah dibuat:

SELECT OBJECT_ID(N'dbo.t1', N'U');

Contoh hasil:

354100302

Jika kami ingin sedikit lebih banyak info, kami dapat melakukan sesuatu seperti ini:

sp_tables 't1';

Hasil:

+-------------------+---------------+--------------+--------------+-----------+
| TABLE_QUALIFIER   | TABLE_OWNER   | TABLE_NAME   | TABLE_TYPE   | REMARKS   |
|-------------------+---------------+--------------+--------------+-----------|
| KrankyKranes      | dbo           | t1           | TABLE        | NULL      |
+-------------------+---------------+--------------+--------------+-----------+

Di sini, KrankyKranes adalah database tempat saya membuat tabel.

Ada banyak cara lain untuk melihat tabel yang ada. Lihat 6 Cara untuk Memeriksa apakah Tabel Ada di SQL Server sebagai contoh.

Opsi 2:Kueri sys.tables

Cara lain untuk memeriksa apakah tabel sudah ada adalah dengan menanyakan sys.tables tampilan katalog sistem.

Contoh:

IF NOT EXISTS (
    SELECT * FROM sys.tables t 
    JOIN sys.schemas s ON (t.schema_id = s.schema_id) 
    WHERE s.name = 'dbo' AND t.name = 't1') 	
    CREATE TABLE dbo.t1 (
        c1 int,
        c2 varchar(10)
        );

Itu melakukan hal yang mirip dengan contoh sebelumnya; ia memeriksa keberadaan tabel dan membuatnya hanya jika tidak ada.

Terlepas dari metode yang digunakan untuk memeriksa keberadaan tabel, perintah berhasil diselesaikan, terlepas dari apakah tabel ada atau tidak.

Jadi kita mendapatkan output berikut dari kedua metode:

Commands completed successfully.

Saya mendapatkan pesan itu apakah tabel sudah ada atau belum.

Jika tabel sudah ada, tetapi kita tidak mengecek keberadaan tabel, kita mendapatkan error seperti ini:

Msg 2714, Level 16, State 6, Line 1
There is already an object named 't1' in the database.

Penting untuk dicatat bahwa, hanya karena tabel dengan nama tersebut sudah ada di database, bukan berarti tabel tersebut memiliki definisi yang benar. Metode di atas cukup memeriksa tabel berdasarkan nama dan skema.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menemukan level transaksi saat ini?

  2. Bagaimana cara menaikkan varchar secara otomatis?

  3. Kembalikan Prosedur &Fungsi Tersimpan dalam Database SQL Server:RUTIN (Contoh T-SQL)

  4. Bagaimana cara terhubung ke mssql menggunakan pdo melalui PHP dan Linux?

  5. Tetapkan nama file secara dinamis ke string koneksi excel