Могу ли я изменить ограничение varchar в SQL Server 2005 после того, как я определю свои PK и FK? - PullRequest
0 голосов
/ 22 сентября 2011

Могу ли я изменить ограничение varchar в SQL Server 2005 после того, как я определил свои PK и FK?

varchar(10) ----> varchar (50) 

Ответы [ 2 ]

1 голос
/ 22 сентября 2011

Если столбец используется во внешнем ключе, вам нужно будет удалить ограничение FK, изменить тип данных, а затем заново создать внешний ключ.На самом деле очень тривиально, особенно если перед удалением ограничений вы их сценарием используете SSMS, потому что изменение типа данных не влияет на определение ограничения FK;проблема только в том, что вы не можете изменить тип данных, пока наложены ограничения.

1 голос
/ 22 сентября 2011

Если рассматриваемый столбец является частью ограничения внешнего ключа, то, очевидно, нет - типы данных с обеих сторон ограничения должны точно совпадать, а оператор ALTER TABLE может влиять только на одну таблицу за раз.

Если это просто еще один столбец в таблице с ограничением внешнего ключа, то да, его можно изменить.


Если столбец является частью первичного ключа или уникальнымограничение, и не ссылается на внешний ключ, он может быть изменен.Мне потребовалось ~ 30 секунд, чтобы написать это:

create table T1 (
    ID varchar(10) not null PRIMARY KEY,
    Val1 varchar(10) not null UNIQUE
)
go
insert into T1 (ID,Val1) values ('abc','def')
go
alter table T1 alter column Val1 varchar(50) not null
go
alter table T1 alter column ID varchar(50) not null

Работает без ошибок.

...