SQL Server 2008中的表问题

时间:2013-09-10 04:57:59

标签: sql-server-2008

我在SQL Server 2008中有一个像这样的表:

Column      DataType
-----------------------
FID         numeric(18, 0)
Name        varchar(50)
DOB         datetime
MobileNo    numeric(18, 0)
EmailId     varchar(50)
add1        varchar(50)
add2        varchar(50)
add3        varchar(50)
Pincode     numeric(18, 0)
UpdateDate  datetime

在此表中,FID应更改为varchar(50)而不删除(删除)表格。

如何执行此操作并将FID设置为上表的主键,也作为其他表的外键

3 个答案:

答案 0 :(得分:1)

正如我所说的那样 - 我会将列FID保留原样 - 否则,您将在整个数据模型中产生连锁反应,这真的不是您想要做的。

你可以做的是:创建一个新的,单独的列,其中包含“hgiher ups”非常渴望的新前缀,并将其与FID值连接 - 但它是一个单独的列,并且您根本不需要更改任何引用。

ALTER TABLE dbo.YourTable 
ADD FID2 AS 'MU' + CAST(FID AS VARCHAR(20)) PERSISTED

有了这个,您将获得一个名为VARCHAR的{​​{1}}新列,其中包含的值为FID2MU1 .....等等 - 自动,无需更改,没有杂乱的表格重新创建和数据复制....它只是有效!

答案 1 :(得分:0)

Right click table -> Design -> Change the numeric(18, 0) to varchar(50) -> Save

它将要求确认,因为从一种数据类型更改为另一种数据类型会删除某些精度值。

最佳做法是保持Primary和foriegn键的唯一编号。但您也可以选择varchar

的唯一代码值

还有一件事,更改主键字段数据类型也会自动更改其他表中所有关系外键字段的数据类型。

答案 2 :(得分:0)

Tools->Options->designers->(Unmark)Prevent saving changes that require table recreation