Trong SQL Server, bạn có thể sử dụng sp_rename
quy trình được lưu trữ để đổi tên đối tượng do người dùng tạo trong cơ sở dữ liệu hiện tại, bao gồm cả kiểu dữ liệu do người dùng xác định.
Cú pháp
Cú pháp như sau:
EXEC sp_rename 'old_datatype', 'new_datatype', 'USERDATATYPE';
Ở đâu old_datatype
là tên của kiểu dữ liệu do người dùng xác định mà bạn muốn đổi tên và new_datatype
là tên mới mà bạn muốn đặt cho nó.
Ví dụ
Hãy xem các kiểu dữ liệu do người dùng xác định hiện tại trong cơ sở dữ liệu của chúng tôi.
SELECT
name,
max_length,
[precision],
scale,
is_user_defined
FROM sys.types
WHERE is_user_defined = 1;
Kết quả:
+----------+--------------+-------------+---------+-------------------+ | name | max_length | precision | scale | is_user_defined | |----------+--------------+-------------+---------+-------------------| | clientid | 8 | 0 | 0 | 1 | +----------+--------------+-------------+---------+-------------------+
Chúng tôi có một kiểu dữ liệu do người dùng xác định được gọi là clientid
.
Hãy đổi tên nó thành clientcode
.
EXEC sp_rename 'clientid', 'clientcode', 'USERDATATYPE';
Chạy mà đổi tên nó thành clientcode
. Bạn có thể thấy thông báo sau:
Caution: Changing any part of an object name could break scripts and stored procedures.
Về cơ bản, điều này cho chúng tôi biết rằng nếu chúng tôi có bất kỳ tập lệnh nào của các thủ tục được lưu trữ tham chiếu đến đối tượng đã đổi tên của chúng tôi, thì chúng sẽ bị hỏng và chúng tôi sẽ cần cập nhật chúng.
Bạn có thể tự hỏi nếu điều này có nghĩa là bất kỳ cột nào hiện có sử dụng kiểu dữ liệu này bây giờ sẽ bị hỏng?
May mắn thay, các cột hiện có sẽ ổn.
Sau khi đổi tên kiểu dữ liệu do người dùng xác định, bất kỳ cột nào sử dụng kiểu dữ liệu đó sẽ tiếp tục sử dụng kiểu dữ liệu đó với tên mới. Mọi hạn chế của loại dữ liệu (chẳng hạn như độ dài, v.v.) tiếp tục được thực thi.
Bây giờ, hãy kiểm tra lại danh sách các loại dữ liệu do người dùng xác định:
SELECT
name,
max_length,
[precision],
scale,
is_user_defined
FROM sys.types
WHERE is_user_defined = 1;
Kết quả:
+------------+--------------+-------------+---------+-------------------+ | name | max_length | precision | scale | is_user_defined | |------------+--------------+-------------+---------+-------------------| | clientcode | 8 | 0 | 0 | 1 | +------------+--------------+-------------+---------+-------------------+
Như mong đợi, nó đã được đổi tên như đã chỉ định.