Reply to Re: alter table column, which is part of foreign key

Your name:

Reply:


Posted by Dan Guzman on 04/01/06 16:24

You'll need to remove the constraints on the column before the ALTER and add
back afterward like the example below. If you used system-generated
constraint names, you can determine the names with sp_help 'table name'

CREATE TABLE table1
(
column1 varchar(32) NOT NULL,
column2 int NOT NULL,
column10 varchar(255),
CONSTRAINT PK_table1 PRIMARY KEY (column1, column2)
);

CREATE TABLE table2
(
column1 varchar(32),
column2 int NOT NULL,
column20 varchar(255) NOT NULL,
CONSTRAINT FK_table2_table1 FOREIGN KEY
(column1, column2)
REFERENCES table1(column1, column2)
);

ALTER TABLE table2
DROP CONSTRAINT FK_table2_table1;
ALTER TABLE table1
DROP CONSTRAINT PK_table1;

ALTER TABLE table1
ALTER COLUMN column1 nvarchar(32) NOT NULL;
ALTER TABLE table2
ALTER COLUMN column1 nvarchar(32);

ALTER TABLE table1
ADD CONSTRAINT PK_table1
PRIMARY KEY (column1, column2)

ALTER TABLE table2
ADD CONSTRAINT FK_table1_table2
FOREIGN KEY (column1, column2)
REFERENCES table1(column1, column2)

--
Hope this helps.

Dan Guzman
SQL Server MVP

"RamaKrishna Narla" <rknarla@gmail.com> wrote in message
news:1143871217.127737.223420@j33g2000cwa.googlegroups.com...
> In MS SQL Server, I have the following tables with some data in it.
>
> create table table1 (
> column1 varchar(32),
> column2 int not null,
> column10 varchar(255),
> .....
> primary key (column1, column2),
> );
>
> create table table2 (
> column1 varchar(32),
> column2 int not null,
> column20 varchar(255) not null,
> ....
> foreign key (column1, column2) references table1(column1, column2)
> );
>
> Now, I need to change the all column types from varchar to nvarchar to
> support internationalized character set.
> I am able to do so, for columns column10 in table1 and column20 of
> table2 without any problems by using command:
>
> "alter table table1 alter column column10 nvarchar(255);"
>
> But, when I try the similar thing for column1 of table1/table2, am
> getting one error message saying like: "ALTER TABLE ALTER COLUMN failed
> because one or more objects access this column". I guess, this is
> coming because of foreign key relationship between the tables.
>
> NOTE: While defining the table2, for foreign key I have not specified
> anything like "on update cascase" ...etc.
>
> How can I resolve this issue? Any suggestions/solutions are really
> helpful to me. Thanks in advance.
>

[Back to original message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация