Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Đổi tên khóa ngoại trong SQL Server bằng T-SQL

Bạn có thể sử dụng sp_rename hệ thống lưu trữ thủ tục để đổi tên một ràng buộc khóa ngoại trong SQL Server.

Mục đích của thủ tục được lưu trữ này là cho phép bạn đổi tên các đối tượng do người dùng tạo trong cơ sở dữ liệu hiện tại, vì vậy bạn cũng có thể đổi tên các đối tượng khác như bảng, cột, kiểu dữ liệu bí danh, v.v.

Cú pháp

Cú pháp của sp_rename như sau:

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

Vì vậy, mã của bạn có thể giống như sau:

sp_rename 'schema_name.old_fk_name', 'new_fk_name';

Lưu ý rằng tài liệu của Microsoft nói rằng khi đổi tên các ràng buộc (chẳng hạn như khóa ngoài), bạn phải đủ điều kiện đặt tên hiện có với tên lược đồ.

Bạn có thể gặp hoặc không gặp lỗi nếu bỏ qua giản đồ, nhưng có lẽ bạn nên làm theo lời khuyên của Microsoft về lược đồ này.

Ví dụ sau đây cho thấy tôi đổi tên khóa ngoại.

Ví dụ 1 - Xem lại Tất cả các Khóa Ngoại

Trước tiên, tôi sẽ xem xét các khóa ngoại trong cơ sở dữ liệu (để tôi có thể quyết định đổi tên khóa nào).

SELECT
  name AS 'Foreign Key',
  SCHEMA_NAME(schema_id) AS 'Schema',
  OBJECT_NAME(parent_object_id) AS 'Table',
  OBJECT_NAME(referenced_object_id) AS 'Referenced Table'
FROM sys.foreign_keys;

Kết quả:

+--------------------------------+----------+---------+--------------------+
| Foreign Key                    | Schema   | Table   | Referenced Table   |
|--------------------------------+----------+---------+--------------------|
| FK_Albums_Artists              | dbo      | Albums  | Artists            |
| FK_Albums_Genres               | dbo      | Albums  | Genres             |
| FK__Artists__Country__4AB81AF0 | dbo      | Artists | Country            |
+--------------------------------+----------+---------+--------------------+

Khóa ngoại thứ ba ( FK__Artists__Country__4AB81AF0 ) đã được đặt tên bởi hệ thống. Hệ thống đặt tên cho nó vì tôi quên cung cấp tên khi tạo.

Hãy đặt tên ngắn gọn hơn cho khóa ngoại này.

Ví dụ 2 - Đổi tên Khoá ngoại

Đây là bit đổi tên khóa ngoại.

sp_rename 'dbo.FK__Artists__Country__4AB81AF0', 'FK_Artists_Country';

Như đã đề cập, tên cũ (hiện có) đứng trước, sau đó đến tên mới.

Vì vậy, bây giờ nếu tôi chọn tất cả các khóa ngoại, tôi nhận được kết quả sau.

SELECT
  name AS 'Foreign Key',
  SCHEMA_NAME(schema_id) AS 'Schema',
  OBJECT_NAME(parent_object_id) AS 'Table',
  OBJECT_NAME(referenced_object_id) AS 'Referenced Table'
FROM sys.foreign_keys;

Kết quả:

+--------------------+----------+---------+--------------------+
| Foreign Key        | Schema   | Table   | Referenced Table   |
|--------------------+----------+---------+--------------------|
| FK_Albums_Artists  | dbo      | Albums  | Artists            |
| FK_Albums_Genres   | dbo      | Albums  | Genres             |
| FK_Artists_Country | dbo      | Artists | Country            |
+--------------------+----------+---------+--------------------+

Tôi đã đổi tên thành công khóa ngoại.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách tìm nạp số lượng hàng cho tất cả các bảng trong cơ sở dữ liệu SQL SERVER

  2. Cài đặt cụm chuyển đổi dự phòng SQL Server -3

  3. Cú pháp của vòng lặp for trong SQL Server

  4. SQL Server:Mặt tối của NVARCHAR

  5. Làm cách nào để bạn đạt đến giới hạn 8060 byte mỗi hàng và 8000 cho mỗi giá trị (varchar, nvarchar)?