Làm cách nào để tạo một ràng buộc duy nhất trên một bảng hiện có trong SQL Server 2005?
Tôi đang tìm kiếm cả TSQL và cách thực hiện trong Sơ đồ cơ sở dữ liệu.
Làm cách nào để tạo một ràng buộc duy nhất trên một bảng hiện có trong SQL Server 2005?
Tôi đang tìm kiếm cả TSQL và cách thực hiện trong Sơ đồ cơ sở dữ liệu.
Câu trả lời:
Lệnh SQL là:
ALTER TABLE <tablename> ADD CONSTRAINT
<constraintname> UNIQUE NONCLUSTERED
(
<columnname>
)
Xem cú pháp đầy đủ ở đây .
Nếu bạn muốn làm điều đó từ Sơ đồ cơ sở dữ liệu:
Trong SQL Server Management Studio Express:
Cảnh báo: Chỉ một hàng null có thể nằm trong cột bạn đặt là duy nhất.
Bạn có thể làm điều này với một chỉ mục được lọc trong SQL 2008:
CREATE UNIQUE NONCLUSTERED INDEX idx_col1
ON dbo.MyTable(col1)
WHERE col1 IS NOT NULL;
Xem giá trị trường phải là duy nhất trừ khi đó là NULL cho một loạt các câu trả lời.
ALTER TABLE dbo.<tablename> ADD CONSTRAINT
<namingconventionconstraint> UNIQUE NONCLUSTERED
(
<columnname>
) ON [PRIMARY]
Tôi cũng thấy bạn có thể làm điều này thông qua, sơ đồ cơ sở dữ liệu.
Bằng cách nhấp chuột phải vào bảng và chọn Chỉ mục / Khóa ...
Nhấp vào nút 'Thêm' và thay đổi các cột thành (các) cột bạn muốn tạo sự độc đáo.
Thay đổi là duy nhất thành Có.
Nhấp vào đóng và lưu sơ đồ, và nó sẽ thêm nó vào bảng.
Bạn đang tìm kiếm một cái gì đó như sau
ALTER TABLE dbo.doc_exz
ADD CONSTRAINT col_b_def
UNIQUE column_b
Để tạo một ràng buộc ĐỘC ĐÁO trên một hoặc nhiều cột khi bảng đã được tạo, hãy sử dụng SQL sau:
ALTER TABLE TableName ADd UNIQUE (ColumnName1,ColumnName2, ColumnName3, ...)
Để cho phép đặt tên của một ràng buộc ĐỘC ĐÁO cho truy vấn trên
ALTER TABLE TableName ADD CONSTRAINT un_constaint_name UNIQUE (ColumnName1,ColumnName2, ColumnName3, ...)
Truy vấn được hỗ trợ bởi Truy cập MySQL / SQL Server / Oracle / MS.
UNIQUE NONCLUSTERED
và lựa chọn PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON
?
Trong một số trường hợp, có thể mong muốn đảm bảo Khóa duy nhất không tồn tại trước khi tạo. Trong những trường hợp như vậy, đoạn script dưới đây có thể giúp:
IF Exists(SELECT * FROM sys.indexes WHERE name Like '<index_name>')
ALTER TABLE dbo.<target_table_name> DROP CONSTRAINT <index_name>
GO
ALTER TABLE dbo.<target_table_name> ADD CONSTRAINT <index_name> UNIQUE NONCLUSTERED (<col_1>, <col_2>, ..., <col_n>)
GO