sql >> Base de Datos >  >> RDS >> Sqlserver

Alterar el tipo de datos de columna con clave principal

Debe especificar NOT NULL explícitamente en una ALTER TABLE ... ALTER COLUMN de lo contrario, por defecto permite NULL . Esto no está permitido en una columna PK.

Lo siguiente funciona bien.

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

cuando el NOT NULL se omite da el siguiente error

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 par de cosas a considerar en su enfoque programático es que podría necesita eliminar cualquier clave externa que haga referencia a ReferenceID columnas temporalmente y también asegúrese de no incluir el NOT NULL para (no PK) ReferenceID columnas que actualmente son anulable.