sql >> Databasteknik >  >> RDS >> Sqlserver

Ändra kolumndatatyp med primärnyckel

Du måste ange NOT NULL uttryckligen i en ALTER TABLE ... ALTER COLUMN annars tillåter den som standard NULL . Detta är inte tillåtet i en PK-kolumn.

Följande fungerar bra.

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 är utelämnat ger det följande fel

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.

Ett par saker att tänka på i ditt programmatiska tillvägagångssätt är att du skulle måste släppa alla främmande nycklar som refererar till ReferenceID kolumner tillfälligt och se även till att du inte inkluderar NOT NULL för (icke PK) ReferenceID kolumner som för närvarande är nullbar.



  1. kan inte ladda oci8 -> Allvarligt fel:Anrop till odefinierad funktion oci_connect()

  2. Mallmönster och modifierare för formatering av datum/tid i PostgreSQL

  3. Hur ställer man in timeout för anonymt block eller fråga i plsql?

  4. MySQL min/max för DUBBEL typ