Devi specificare NOT NULL
esplicitamente in un ALTER TABLE ... ALTER COLUMN
altrimenti per impostazione predefinita consente NULL
. Ciò non è consentito in una colonna PK.
Quanto segue funziona bene.
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
quando il NOT NULL
viene omesso dà il seguente errore
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.
Un paio di cose da considerare nel tuo approccio programmatico sono che lo faresti è necessario eliminare qualsiasi chiave esterna che faccia riferimento a ReferenceID
colonne temporaneamente e assicurati anche di non includere il NOT NULL
per (non PK) ReferenceID
colonne che attualmente sono nullable.