我在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
设置为上表的主键,也作为其他表的外键
答案 0 :(得分:1)
正如我所说的那样 - 我会将列FID
保留原样 - 否则,您将在整个数据模型中产生连锁反应,这真的不是您想要做的。
你可以做的是:创建一个新的,单独的列,其中包含“hgiher ups”非常渴望的新前缀,并将其与FID
值连接 - 但它是一个单独的列,并且您根本不需要更改任何引用。
ALTER TABLE dbo.YourTable
ADD FID2 AS 'MU' + CAST(FID AS VARCHAR(20)) PERSISTED
有了这个,您将获得一个名为VARCHAR
的{{1}}新列,其中包含的值为FID2
,MU1
.....等等 - 自动,无需更改,没有杂乱的表格重新创建和数据复制....它只是有效!
答案 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