Musisz określić NOT NULL
jawnie w ALTER TABLE ... ALTER COLUMN
w przeciwnym razie domyślnie zezwala na NULL
. Nie jest to dozwolone w kolumnie PK.
Następujące działania działają dobrze.
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
gdy NOT NULL
zostanie pominięty, daje następujący błąd
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.
W podejściu do automatyzacji należy wziąć pod uwagę kilka rzeczy:czy trzeba usunąć wszystkie klucze obce odwołujące się do ReferenceID
kolumny tymczasowo, a także upewnij się, że nie zawierasz NOT NULL
dla (nie PK) ReferenceID
kolumny, które obecnie są null.