Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Zmień typ danych kolumny za pomocą klucza podstawowego

Musisz określić NOT NULL jawnie w ALTER TABLE ... ALTER COLUMN w przeciwnym razie domyślnie zezwala na NULL . Nie jest to dozwolone w kolumnie PK.

Następujące działania działają dobrze.

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

gdy NOT NULL zostanie pominięty, daje następujący błąd

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.

W podejściu do automatyzacji należy wziąć pod uwagę kilka rzeczy:czy trzeba usunąć wszystkie klucze obce odwołujące się do ReferenceID kolumny tymczasowo, a także upewnij się, że nie zawierasz NOT NULL dla (nie PK) ReferenceID kolumny, które obecnie null.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Typy kursorów programu SQL Server — dynamiczny kursor | Samouczek SQL Server / Samouczek TSQL

  2. SQL — wywołanie procedury składowanej dla każdego rekordu

  3. Jak wstawić rekord i zwrócić nowo utworzony identyfikator za pomocą jednego SqlCommand?

  4. SQL Server DOWOLNY operator wyjaśniony

  5. Problemy z replikacją transakcyjną programu SQL Server