Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Alterar tipo de dados da coluna com chave primária


Você precisa especificar NOT NULL explicitamente em um ALTER TABLE ... ALTER COLUMN caso contrário, o padrão permite NULL . Isso não é permitido em uma coluna PK.

O seguinte funciona bem.
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 o NOT NULL é omitido, dá o seguinte erro
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.

Algumas coisas a serem consideradas em sua abordagem programática é que você faria precisa descartar qualquer chave estrangeira referenciando o ReferenceID colunas temporariamente e também certifique-se de não incluir o NOT NULL para (não PK) ReferenceID colunas que atualmente são anulável.