Du måste ange NOT NULL
uttryckligen i en ALTER TABLE ... ALTER COLUMN
annars tillåter den som standard NULL
. Detta är inte tillåtet i en PK-kolumn.
Följande fungerar bra.
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
när NOT NULL
är utelämnat ger det följande fel
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.
Ett par saker att tänka på i ditt programmatiska tillvägagångssätt är att du skulle måste släppa alla främmande nycklar som refererar till ReferenceID
kolumner tillfälligt och se även till att du inte inkluderar NOT NULL
för (icke PK) ReferenceID
kolumner som för närvarande är nullbar.