Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Промяна на типа данни на колоната с първичен ключ

Трябва да укажете NOT NULL изрично в ALTER TABLE ... ALTER COLUMN в противен случай по подразбиране се разрешава NULL . Това не е разрешено в колона PK.

Следното работи добре.

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

когато NOT NULL е пропуснат, дава следната грешка

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.

Няколко неща, които трябва да имате предвид във вашия програмен подход, са, че бихте трябва да изпуснете всички външни ключове, препращащи към ReferenceID колони временно и също се уверете, че не включвате NOT NULL за (не PK) ReferenceID колони, които в момента са nullable.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Fix Error Msg 4151 „Типът на първия аргумент за NULLIF не може да бъде константа NULL, защото типът на първия аргумент трябва да бъде известен“ в SQL Server

  2. Генериране на клас от таблицата на базата данни

  3. Групово вмъкване с .fmt файл:Код на грешка на операционната система (нула)

  4. Вмъкнете с обединение

  5. Обединете цялата геометрия в таблица на SQL Server като GeomUnion в Postgres