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).