sql >> Database >  >> RDS >> Sqlserver

Gegevenstype Kolom wijzigen met primaire sleutel

U moet NOT NULL opgeven expliciet in een ALTER TABLE ... ALTER COLUMN anders staat het standaard NULL . toe . Dit is niet toegestaan ​​in een PK-kolom.

Het volgende werkt prima.

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

wanneer de NOT NULL wordt weggelaten, geeft het de volgende foutmelding

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.

Een aantal dingen waarmee u rekening moet houden bij uw programmatische aanpak, is dat u zou moet eventuele externe sleutels die verwijzen naar de ReferenceID . verwijderen kolommen tijdelijk en zorg er ook voor dat u de NOT NULL . niet opneemt voor (niet PK) ReferenceID kolommen die momenteel zijn nullable.



  1. SQL_NO_CACHE voor Postgresql?

  2. Schrijf een insert-instructie met select-clausule die id retourneert in oracle

  3. SQL indien niet null update

  4. SIN() Functie in Oracle