sql >> Databáze >  >> RDS >> Sqlserver

Změnit datový typ sloupce s primárním klíčem

Musíte zadat NOT NULL explicitně v ALTER TABLE ... ALTER COLUMN jinak je výchozí povoleno NULL . Ve sloupci PK to není povoleno.

Následující funguje dobře.

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

když NOT NULL Pokud je vynechán, zobrazí se následující chyba

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.

Ve svém programovém přístupu je třeba zvážit několik věcí, a to by potřebujete zahodit všechny cizí klíče odkazující na ReferenceID sloupce dočasně a také se ujistěte, že jste nezahrnuli NOT NULL pro (bez PK) ReferenceID sloupců, které aktuálně jsou s možností null.



  1. Oracle automaticky přidá aktuální datum

  2. Localhost php_network_getaddresses:getaddrinfo se nezdařilo:Žádný takový hostitel není znám

  3. Jak získat dotaz pro přenos na následující stránky při stránkování výsledků

  4. Zálohujte databáze mySQL z localhost běžícího na serveru Wamp