Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Type de données Alter Column avec clé primaire

Vous devez spécifier NOT NULL explicitement dans un ALTER TABLE ... ALTER COLUMN sinon, il autorise par défaut NULL . Ceci n'est pas autorisé dans une colonne PK.

Ce qui suit fonctionne 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

lorsque le NOT NULL est omis, il donne l'erreur suivante

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.

Deux choses à considérer dans votre approche programmatique sont que vous souhaitez besoin de supprimer toutes les clés étrangères référençant le ReferenceID colonnes temporairement et assurez-vous également de ne pas inclure le NOT NULL pour (Non PK) ReferenceID colonnes qui sont actuellement nullable.