注册 登录
编程论坛 SQL Server论坛

寻思良久不解,关于修改表属性问题请教!

wubizao 发布于 2008-04-20 21:24, 1524 次点击
建立了一个表,名叫 客户表
客户号 客户名称 联系人 地址 邮政编码 电话
设置了些约束,但是有些设置的不是满足要求,所以打算修改某字段的约束性
比如说邮政编码.
我使用语句:
ALTER TABLE 客户表
ALTER COLUMN 邮政编码 CHAR(6) CHECK(ISNUMERIC(邮政编码)=1 AND LEN(邮政编码)=6)
但是老提示错误:
服务器: 消息 156,级别 15,状态 1,行 2
在关键字 'CHECK' 附近有语法错误。
望帮忙
11 回复
#2
wubizao2008-04-20 22:06
没人帮下忙吗???
#3
wonder_0082008-04-20 22:50
alter table 客户表
add constraint chk_邮政编码 check(isnumeric(邮政编码)=1 and len(邮政编码)=6)
LZ应该好好看看 alter table 这个语句代码范例!
你的大概意思是想保证:1.邮政编码是数字;2.邮政编码的长度为6.
#4
wubizao2008-04-20 22:53
也就是说,已经被check的语句
如果想要修改约束条件
只能使用LS的那种写法吗?
我刚学,也看了书,做实验,不太理解了
#5
wubizao2008-04-20 22:54
是不是用在CHECK约束中的列不能使用ALTER COLUMN
#6
wonder_0082008-04-20 22:55
[bo]以下是引用 [un]wubizao[/un] 在 2008-4-20 22:53 的发言:[/bo]

也就是说,已经被check的语句
如果想要修改约束条件
只能使用LS的那种写法吗?
我刚学,也看了书,做实验,不太理解了

你的意思是说你已经在邮政编码上设置过check约束了。。现在只不过想修改下约束的条件??
#7
wubizao2008-04-20 22:59
对啊,,我已经设置过了,只是不满足要求,我要修改,不是ADD
#8
wonder_0082008-04-20 23:00
[bo]以下是引用 [un]wubizao[/un] 在 2008-4-20 22:54 的发言:[/bo]

是不是用在CHECK约束中的列不能使用ALTER COLUMN

对,已经定义了约束就不能修改的。。alter column 语句的功能还没有那么强大。。。

[[it] 本帖最后由 wonder_008 于 2008-4-20 23:01 编辑 [/it]]
#9
wubizao2008-04-20 23:02
[bo]以下是引用 [un]wonder_008[/un] 在 2008-4-20 23:00 的发言:[/bo]


对,已经定义了约束就不能修改的。。

那就是说,如果想要改,只能添加新的CHECK,删掉旧的,我这样想对不?
#10
wonder_0082008-04-20 23:03
[bo]以下是引用 [un]wubizao[/un] 在 2008-4-20 22:59 的发言:[/bo]

对啊,,我已经设置过了,只是不满足要求,我要修改,不是ADD

你可以直接到 Enterprise Manager 里面去更改约束的条件呀。。
#11
wubizao2008-04-20 23:04
我是想有T-SQL语句弄...
#12
wonder_0082008-04-21 00:15
alter table 客户表
drop constraint chk_邮政编码 --这里的chk_邮政编码是原来的check约束名,删除它。
go
alter table 客户表
add constraint chk_邮政编码 check(isnumeric(邮政编码)=1 and len(邮政编码)=6) --新创建的check约束 chk_邮政编码
1