Di SQL Server, Anda dapat menggunakan sp_rename
prosedur tersimpan untuk mengganti nama objek yang dibuat pengguna dalam database saat ini, termasuk tipe data yang ditentukan pengguna.
Sintaks
Sintaksnya seperti ini:
EXEC sp_rename 'old_datatype', 'new_datatype', 'USERDATATYPE';
Dimana old_datatype
adalah nama tipe data yang ditentukan pengguna yang ingin Anda ganti namanya, dan new_datatype
adalah nama baru yang ingin Anda berikan.
Contoh
Mari kita lihat tipe data yang ditentukan pengguna saat ini di database kita.
SELECT
name,
max_length,
[precision],
scale,
is_user_defined
FROM sys.types
WHERE is_user_defined = 1;
Hasil:
+----------+--------------+-------------+---------+-------------------+ | name | max_length | precision | scale | is_user_defined | |----------+--------------+-------------+---------+-------------------| | clientid | 8 | 0 | 0 | 1 | +----------+--------------+-------------+---------+-------------------+
Kami memiliki satu tipe data yang ditentukan pengguna yang disebut clientid
.
Mari kita ganti namanya menjadi clientcode
.
EXEC sp_rename 'clientid', 'clientcode', 'USERDATATYPE';
Menjalankan yang mengubah namanya menjadi clientcode
. Anda mungkin melihat pesan berikut:
Caution: Changing any part of an object name could break scripts and stored procedures.
Ini pada dasarnya memberi tahu kita bahwa jika kita memiliki skrip prosedur tersimpan yang mereferensikan objek yang diganti namanya, maka skrip tersebut akan rusak, dan kita perlu memperbaruinya.
Anda mungkin bertanya-tanya apakah ini berarti kolom yang ada yang menggunakan tipe data ini sekarang akan rusak?
Untungnya, kolom yang ada seharusnya baik-baik saja.
Setelah mengganti nama tipe data yang ditentukan pengguna, kolom apa pun yang menggunakan tipe data tersebut akan terus menggunakan tipe data tersebut dengan nama barunya. Pembatasan jenis data apa pun (seperti panjang, dll) terus diterapkan.
Sekarang mari kita periksa lagi daftar tipe data yang ditentukan pengguna:
SELECT
name,
max_length,
[precision],
scale,
is_user_defined
FROM sys.types
WHERE is_user_defined = 1;
Hasil:
+------------+--------------+-------------+---------+-------------------+ | name | max_length | precision | scale | is_user_defined | |------------+--------------+-------------+---------+-------------------| | clientcode | 8 | 0 | 0 | 1 | +------------+--------------+-------------+---------+-------------------+
Seperti yang diharapkan, itu telah diganti namanya seperti yang ditentukan.