sql >> Database teknologi >  >> RDS >> Sqlserver

Skift kolonnedatatype med primærnøgle

Du skal angive NOT NULL eksplicit i en ALTER TABLE ... ALTER COLUMN ellers tillader den som standard NULL . Dette er ikke tilladt i en PK kolonne.

Følgende fungerer fint.

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 er udeladt giver det følgende fejl

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.

Et par ting at overveje i din programmatiske tilgang er, at du ville nødt til at droppe eventuelle fremmednøgler, der refererer til ReferenceID kolonner midlertidigt, og sørg også for, at du ikke inkluderer NOT NULL for (ikke PK) ReferenceID kolonner, der i øjeblikket er nullable.



  1. Hent alle rækker fra sidste måned (Laravel + Eloquent)

  2. Øg værdien i MySQL-opdateringsforespørgsel

  3. Sqlite Android Raw Query INSERT INTO Virker ikke

  4. Wordnet SQL-forklaring