CẬP NHẬTThay đổi cột khóa chính trong SQL Server
Dưới đây là những hạn chế như là kết quả của truy vấn
SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_NAME = 'history'
CONSTRAINT_NAME COLUMN_NAME ORDINAL_POSITION
PK_history userKey 1
PK_history name 2
Dưới đây là kết quả của truy vấn
SELECT *
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_NAME = 'history'
CONSTRAINT_NAME CONSTRAINT_TYPE IS_DEFERRABLE INITIALLY_DEFERRED
PK_history PRIMARY KEY NO NO
END CẬP NHẬT
Máy chủ lưu trữ của tôi cung cấp giao diện cho SQL Server DB của tôi thông qua ASP.NET Enterprise Manager.
Tôi có 3 cột trong bảng history
tôi:
userId
(key, int, NULL không được phép)name
(chìa khóa, chuỗi, NULL không được phép)id
(không quan trọng, int, NULL được phép)
Tôi muốn đặt cột id là khóa duy nhất.
Để làm điều đó, tôi tin rằng tôi cần phải:
- Hãy chắc chắn rằng không có NULLs trong cột đó cho bất kỳ hàng
- Đặt cột để không cho phép null
- Thêm cột như một chính chủ chốt
- Tháo 2 cột khác như phím
Tuy nhiên, khi tôi sử dụng giao diện người dùng được cung cấp, nó không bao giờ làm việc. Đôi khi nó sẽ chỉ trông giống như nó cố gắng để làm một cái gì đó nhưng nó không bao giờ thay đổi khi tôi làm mới xem các cột. Nó đôi khi tạo ra một bảng tạm thời có vẻ như nó đã cố gắng để làm một số hoạt động, nhưng điều đó không bao giờ được sao chép/ghi đè lên bảng gốc mà tôi đang cố gắng thay đổi.
Khi tôi thử sử dụng truy vấn, các thay đổi cũng không hiển thị. Dưới đây là các truy vấn tôi nghĩ mình cần:
SELECT * from history WHERE id is NULL <---- This shows 0 results
ALTER TABLE history
ALTER COLUMN id int NOT NULL
ALTER TABLE history ADD PRIMARY KEY (id)
ALTER TABLE history
DROP CONSTRAINT userId
DROP CONSTRAINT name
GO
Tôi chỉ nhận được nỗ lực không cho phép NULL và thêm khóa chính cho cột id. Nó dường như không hoạt động. Ai đó có thể chỉ cho tôi đi đúng hướng? Cảm ơn!
Bạn có nhận được thông báo lỗi không? –
bạn nên bỏ các ràng buộc đầu tiên –
không, tôi không nhận được bất kỳ thông báo lỗi nào với truy vấn. Với UI, tôi nhận được lỗi liên quan đến việc thiết lập cột id thành một khóa khi nó cho phép null, nhưng không có lỗi khi cố gắng không cho phép null. – ckbhodge