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

Kiểu dữ liệu của Cột thay thế với khóa chính

Bạn cần chỉ định NOT NULL rõ ràng trong ALTER TABLE ... ALTER COLUMN nếu không, nó mặc định cho phép NULL . Điều này không được phép trong cột PK.

Những điều sau đây hoạt động tốt.

CREATE TABLE p
(
ReferenceID VARCHAR(6) NOT NULL PRIMARY KEY
)

INSERT INTO p VALUES ('AAAAAA')

ALTER TABLE p ALTER COLUMN ReferenceID VARCHAR(8) NOT NULL

khi NOT NULL bị bỏ qua, nó gây ra lỗi sau

Msg 5074, Level 16, State 1, Line 1
The object 'PK__p__E1A99A792180FB33' is dependent on column 'ReferenceID'.
Msg 4922, Level 16, State 9, Line 1
ALTER TABLE ALTER COLUMN ReferenceID failed because one or more objects access this column.

Một số điều cần xem xét trong cách tiếp cận có lập trình của bạn là bạn sẽ cần bỏ bất kỳ khóa ngoại nào tham chiếu đến ReferenceID tạm thời và cũng đảm bảo rằng bạn không bao gồm NOT NULL cho (Không PK) ReferenceID các cột hiện đang vô hiệu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Không thể cắt ngắn bảng vì nó đang được tham chiếu bởi ràng buộc NGOẠI KHÓA?

  2. SQL SERVER Nhật ký giao dịch đầy đủ

  3. Chuyển đổi ‘datetime’ thành ‘datetimeoffset’ trong SQL Server (Ví dụ T-SQL)

  4. Làm cách nào để nối nhiều hàng thành một chuỗi trong SQL Server 2008?

  5. Hợp nhất nhiều cột trong một, duy trì sự giống nhau và thay thế sự khác biệt