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

Ganti nama Kunci Utama di SQL Server (T-SQL)

Di SQL Server, Anda dapat menggunakan sp_rename prosedur tersimpan untuk mengganti nama objek yang dibuat pengguna dalam database saat ini, termasuk kunci utama.

Ini bisa berguna jika Anda memiliki kunci utama yang namanya ditetapkan secara otomatis, dan sekarang Anda ingin memberinya nama yang lebih mudah dibaca.

Saat Anda membuat kunci utama tanpa secara eksplisit memberikan nama untuk itu, SQL Server secara otomatis mendelegasikan nama untuk itu. Nama-nama seperti itu biasanya menyertakan akhiran numerik yang panjang, yang membuatnya lebih sulit untuk diingat. Jika Anda perlu merujuk ke kunci utama itu (misalnya dalam kode Anda, dokumentasi, dll), nama tersebut dapat membuat hidup Anda lebih sulit. Untungnya, sp_rename menyediakan cara cepat dan mudah untuk mengubah nama ini.

Sintaks

Sintaks untuk sp_rename seperti ini:

sp_rename 
    [ @objname = ] 'object_name' ,
    [ @newname = ] 'new_name'
    [ , [ @objtype = ] 'object_type' ]

Untuk kunci utama (dan batasan lainnya), tipe objeknya adalah OBJECT .

Contoh

Pertama, mari kita cari nama kunci utama yang ingin kita ubah:

SELECT 
    SCHEMA_NAME(schema_id) AS SchemaName, 
    name AS PrimaryKey
FROM sys.objects  
WHERE parent_object_id = (OBJECT_ID('dbo.t1'))   
AND type = 'PK';

Hasil:

 +--------------+--------------------------+
 | SchemaName   | PrimaryKey               |
 |--------------+--------------------------|
 | dbo          | PK__t1__3213663B10938530 |
 +--------------+--------------------------+ 

Ini adalah kunci utama untuk tabel yang disebut t1 , Jadi kita akan melanjutkan dan mengganti nama kunci utama itu.

Saat Anda mengganti nama kunci utama, Anda harus menyertakan skema dengan nama saat ini.

Contoh:

EXEC sp_rename 'dbo.PK__t1__3213663B10938530', 'PK_t1';

Saat Anda mengganti nama kunci utama (atau objek lainnya) di SQL Server, Anda mungkin akan melihat pesan berikut:

Caution: Changing any part of an object name could break scripts and stored procedures.

Ini pada dasarnya memberi kita petunjuk bahwa skrip dan/atau prosedur tersimpan apa pun yang mereferensikan objek sekarang dapat rusak, dan harus diperbarui sesuai untuk mencerminkan nama baru.

Bagaimanapun, kunci utama kini telah diganti namanya.

Kami dapat memverifikasi ini dengan menjalankan kembali kueri sebelumnya:

SELECT 
    SCHEMA_NAME(schema_id) AS SchemaName, 
    name AS PrimaryKey
FROM sys.objects  
WHERE parent_object_id = (OBJECT_ID('dbo.t1'))   
AND type = 'PK';

Hasil:

 +--------------+--------------+
 | SchemaName   | PrimaryKey   |
 |--------------+--------------|
 | dbo          | PK_t1        |
 +--------------+--------------+ 

Termasuk Jenis Objek

Anda juga dapat menyertakan tipe objek sebagai argumen ketiga. Untuk kunci utama dan batasan lainnya, gunakan OBJECT :

EXEC sp_rename 'dbo.PK__t1__3213663B10938530', 'PK_t1', 'OBJECT';

Termasuk Nama Parameter

Seperti prosedur tersimpan lainnya, Anda juga dapat menyertakan nama parameter saat memanggil sp_rename :

EXEC sp_rename 
    @objname = 'dbo.PK__t1__3213663B10938530',
    @newname = 'PK_t1',
    @objtype = 'OBJECT';

Ini melakukan hal yang persis sama (mengganti nama kunci utama yang ditentukan).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. DATEDIFF() Mengembalikan Hasil yang Salah di SQL Server? Baca ini.

  2. Tidak dapat mengecilkan basis data 'hanya baca' | Kecilkan Log Transaksi Saat Menggunakan Grup Ketersediaan AlwaysOn

  3. Cara Membuat Prosedur Tersimpan Terikat Skema di SQL Server

  4. SQL Server:haruskah saya menggunakan tabel information_schema di atas tabel sistem?

  5. Fungsi Matematika SQL Server (Daftar Lengkap)