Трябва да укажете NOT NULL
изрично в ALTER TABLE ... ALTER COLUMN
в противен случай по подразбиране се разрешава NULL
. Това не е разрешено в колона PK.
Следното работи добре.
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
когато NOT NULL
е пропуснат, дава следната грешка
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.
Няколко неща, които трябва да имате предвид във вашия програмен подход, са, че бихте трябва да изпуснете всички външни ключове, препращащи към ReferenceID
колони временно и също се уверете, че не включвате NOT NULL
за (не PK) ReferenceID
колони, които в момента са nullable.