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

Buat Objek DIE di SQL Server

Di SQL Server, jika Anda mencoba menjatuhkan objek yang tidak ada, Anda akan mendapatkan kesalahan. Jika Anda tidak ingin mendapatkan kesalahan, Anda harus menambahkan beberapa kode tambahan untuk memeriksa keberadaan objek.

Sebelum SQL Server 2016, Anda perlu menambahkan IF pernyataan yang menanyakan objek sistem yang relevan untuk mengetahui apakah objek itu ada atau tidak.

Dari SQL Server 2016, Anda sekarang dapat menggunakan metode baru yang lebih bersih untuk memeriksa apakah ada objek. Kami akan menyebutnya DROP IF EXISTS (atau dikenal sebagai “MATI”).

Contoh 1 – Sintaks Dasar

Sintaks sebenarnya tidak mengandung DROP IF EXISTS string seperti itu. Yang perlu Anda lakukan adalah memasukkan jenis objek di antara DROP dan IF .

DROP TABLE IF EXISTS Customers

Dalam hal ini, saya menjatuhkan tabel, jadi kata TABLE disisipkan di antara DROP dan IF . Nama meja yang ingin saya taruh (dalam hal ini Pelanggan ) ditempatkan di akhir.

Contoh 2 – Demo Dasar

Berikut ini contoh membuat database, lalu menghapusnya, lalu mencoba menghapusnya lagi.

CREATE DATABASE Homer;
GO
DROP DATABASE IF EXISTS Homer;
GO
DROP DATABASE IF EXISTS Homer;
GO

Hasil:

Started executing query at Line 17
Commands completed successfully.

Started executing query at Line 19
Commands completed successfully.

Started executing query at Line 21
Commands completed successfully.

Tidak ada kesalahan yang terjadi, meskipun saya mencoba untuk menjatuhkan objek yang tidak ada di baris ketiga.

Contoh 3 – Tanpa JIKA ADA

Ini dia lagi, kecuali kali ini saya hapus IF EXISTS bagian.

CREATE DATABASE Homer;
GO
DROP DATABASE Homer;
GO
DROP DATABASE Homer;
GO

Hasil:

Started executing query at Line 17
Commands completed successfully.

Started executing query at Line 19
Commands completed successfully.

Started executing query at Line 21
Msg 3701, Level 11, State 1, Line 5
Cannot drop the database 'Homer', because it does not exist or you do not have permission.

Dalam hal ini saya mendapatkan kesalahan, karena mencoba menjatuhkan objek yang tidak ada.

Contoh 4 – Kolom dan Batasan

Anda juga dapat menggunakan DIE pada kolom dan batasan.

Misalnya, Anda dapat menggunakan DROP COLUMN IF EXISTS dalam ALTER TABLE pernyataan.

Ini contohnya.

DROP TABLE IF EXISTS DieTest;
GO

CREATE TABLE DieTest
(
    DieTestId uniqueidentifier NOT NULL DEFAULT NEWID(),
    DieTestName varchar(70), 
    InsertDate datetime2(7) NOT NULL DEFAULT GETDATE()
);
GO

ALTER TABLE DieTest
DROP COLUMN IF EXISTS DieTestName;
GO

ALTER TABLE DieTest
DROP COLUMN IF EXISTS DieTestName;
GO

Hasil:

Started executing query at Line 1
Commands completed successfully.

Started executing query at Line 3
Commands completed successfully.

Started executing query at Line 11
Commands completed successfully.

Started executing query at Line 15
Commands completed successfully.

Contoh 5 – Sebelum SQL Server 2016

Sebelum SQL Server 2016, untuk menguji keberadaan objek, Anda perlu melakukan sesuatu seperti ini:

IF DB_ID('Homer') IS NOT NULL
DROP DATABASE Homer;

Contoh itu menggunakan DB_ID() karena kita berurusan dengan database. Jika objek adalah tipe yang berbeda, Anda mungkin perlu menggunakan OBJECT_ID() fungsi atau sesuatu yang lain sama sekali.

Misalnya:

IF OBJECT_ID('dbo.Customers, 'U') IS NOT NULL
DROP TABLE dbo.Customers;
 
IF EXISTS (SELECT * FROM sys.triggers WHERE name = 'MyTrigger')
DROP TRIGGER MyTrigger

Setelah kita mulai melihat kode ini, kita dapat melihat mengapa DROP IF EXISTS adalah tambahan sambutan untuk sintaks T-SQL.

Objek yang Layak

DIE dapat digunakan pada objek berikut.

AGREGAT

PROSEDUR

TABEL

PERAKITAN

PERAN

PEMICU

LIHAT

ATURAN

JENIS

DATABASE

SKEMA

PENGGUNA

DEFAULT

KEBIJAKAN KEAMANAN

LIHAT

FUNGSI

URUTAN

INDEKS

SINONIM

Seperti disebutkan, DIE juga dapat digunakan pada kolom dan batasan saat menggunakan ALTER TABLE pernyataan:

  • UBAH TABLE DROP COLUMN JIKA ADA
  • UBAH TABEL DROP CONSTRAINT JIKA ADA

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Mengonversi String ke Tanggal/Waktu di SQL Server menggunakan CONVERT()

  2. Secara terprogram mengambil sumber prosedur tersimpan SQL Server yang identik dengan sumber yang dikembalikan oleh gui SQL Server Management Studio?

  3. Memecahkan Masalah Kinerja CPU SQL Server

  4. Dapatkan AVG mengabaikan nilai Null atau Zero

  5. Lihat Riwayat Pekerjaan Agen SQL Server dengan SSMS