如何使用alter更改表中的字段类型。

如何使用alter更改表中的字段类型。,第1张

SQL如何用语句更改字段可以用以下语句可以实现:

alter table 表名 alter column 字段名 变更后的字段类型。

注意:

但若是关键字段,带有主键,并且字段类型为用户自定义类型,具有默认值的情况下,用上述语句会出现错误。

例如:

现假设表为TABLE1,关键字段为FIELD1,主键为PK_FIELD1,关键字段的数据类型为用户自定义数据类型 cha_field1,实际为CHAR(10),默认值为dboD_field1现要求将字段类型改为 varchar(20),默认值去除错误提示如下:

服务器: 消息 5074,级别 16,状态 1,行 1

对象 'D_field1' 依赖于 列 'field1'。

服务器: 消息 5074,级别 16,状态 1,行 1

对象 'PK_field1' 依赖于 列 'field1'。

服务器: 消息 4922,级别 16,状态 1,行 1

ALTER TABLE ALTER COLUMN field1 失败,因为有一个或多个对象访问此列。

用ALTER语句
先用ALTER另建一个字段, 为备注型, 然后把数据拷入此字段, 再把原字段删除 如果需要保存原字段名, 还可以先建个字段, 把数据拷入后, 删除原字段, 再建一个与原字段名相同的字段, 再拷一次数据
也许没有有这么复杂, 具体的你看ALTER的用法吧, 看可不可以直接更改字段名, 以前我用VF的时候处理过这类问题
ALTER的语法见后:
ALTER TABLE 语句
修改已用 CREATE TABLE 语句创建的表的设计。
注释 Microsoft Jet 数据库引擎 不支持对非 Microsoft Jet 数据库使用 ALTER TABLE 语句或任何数据定义语言 (DDL) 语句。可以使用 DAO Create 方法代替。
语法
ALTER TABLE table {ADD {COLUMN field type[(size)] [NOT NULL] [CONSTRAINT index] |
ALTER COLUMN field type[(size)] |
CONSTRAINT multifieldindex} |
DROP {COLUMN field I CONSTRAINT indexname} }
ALTER TABLE 语句有以下部分:
部分 说明
table 要修改的表的名称。
field 要添加进 table 中或者从 table 中删除的字段名称。或者是要在 table 中修改的字段名称。
type field 数据类型。
size 以字符数为单位的字段大小(仅限于文本和二进制字段)。
index field 的索引。
multifieldindex 定义将要添加到 table 中的多字段索引。
indexname 将要删除的多字段索引的名称。
说明
通过 ALTER TABLE 语句可以用多种方式修改一个现有的表。您可以:
使用 ADD COLUMN 向表中添加新字段。可以指定字段名称、数据类型和可选大小(对于文本和二进制字段)。例如,以下语句将一个称为 Notes 的、大小为 25 的字符文本字段添加到 Employees 表中:
ALTER TABLE Employees ADD COLUMN Notes TEXT(25)
也可以定义该字段的索引。
如果指定一个字段为 NOT NULL,那么新记录的该字段必需有有效数据。
使用 ALTER COLUMN 可更改现有字段的数据类型。可以指定字段名称、新的数据类型及文本和二进制字段的可选大小。例如,以下语句将 Employees 表中称为 ZipCode(原先定义为整数)字段的数据类型更改为一个大小为 10 个字符的文本字段:
ALTER TABLE Employees ALTER COLUMN ZipCode TEXT(10)
使用 ADD CONSTRAINT 可添加一个多字段索引。
使用 DROP COLUMN 可删除字段。只需指定字段的名称。
使用 DROP CONSTRAINT 可删除多字段索引。只需在 CONSTRAINT 保留字后面指定索引名称。
注释
不能一次添加或删除多个字段或索引。
可以使用 CREATE INDEX 语句向表中添加单字段或多字段的索引,并且可以使用 ALTER TABLE 或者 DROP 语句删除一个使用 ALTER TABLE 或 CREATE INDEX 创建的索引。
可以对单字段使用 NOT NULL,或者在一个命名的 CONSTRAINT 子句内(该子句应用于一个单字段或一个多重字段的命名 CONSTRAINT)使用 NOT NULL。然而,NOT NULL 限制一次只能应用于一个字段。试图将此限制一次运用于多个字段会产生运行时错误。

有一需求,就是把表中作为主键字段的数据类型从int 转换为 uniqueidentifier。我们可能会想到直接通过Microsoft SQL Server Management Studio (MSSMS)修改表结构,删除原来的主键,增加一个数据类型为uniqueidentifier的字段作为主键,并对它设置not null default(newid()) 。
对于单独的表,主键没有被其他表作为外键,可以这样修改,但一旦存在外键时,我们就不能这样修改了。至少我们需要通过编写T-SQL语句来实现,基本方法是:
1删除外键约束
2修改表字段类型(删除主键约束-->新增uniqueidentifier类型的字段(default(newid())),并设置为主键)
3在其他表(原主键字段,在其他表作为外键的表)新增uniqueidentifier类型的字段(default(newid()))。
4更新数据
5字段重新命名
6重新创建外键
当然你还要考虑索引是否要重新创建,如果我们要修改一大堆的表,那么需要写一大堆的T-SQl代码。
为了解决这一问题,这里我为此特别写了一个存储过程up_ModifyPrimaryColumn来实现表主键数据类型转换。
>季度财务报表数据调整是否能修改
可以修改的,先作废,再上传正确的即可,财务报表问题不大所需资料详情咨询税局前台或者电话12366咨询。

又到了季度申报!报税不会不要怕,纳税申报的12个资料,收藏备用。
15539阅读 3573申请领取去领取 >
季报是否可以更改
1填写情况说明:对申报错误的地方、错误的原因进行说明且申请更正,对于情况说明,没有具体规定的格式要求。最后加盖公章。
2填写情况说明后,将正确的财务报表打印出来,加盖公章,并且把电子财务报表拷贝到U盘。
3预约国税号,对于已改革预约取号的地方,必须进行预约。
4携带情况说明、正确的财务报表、电子财务报表及营业执照前往税局办理。
5税局前台受理之后,找专管员签字,并把所有资料交给专管员,说明相应情况。
6专管员审核且签名后,把所有资料拿回税局前台。
7税局前台看到专管员已签名的资料后,会将原先错误的财务报表删除。
8税局前台删除原先错误的财务报表后,将在税局系统导入你所提供的电子报表,进行正确的申报,最后在正确的纸质表上盖章。
9自己不会做财务报表电子档的情况下,可以让税局前台,只删除原先错误的财务报表,自己在税务系统上申报正确的财务报表即可。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13406147.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-30
下一篇 2023-07-30

发表评论

登录后才能评论

评论列表(0条)

保存