导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

关于修改一个表的问题

Jlmo 2003-12-11 05:06:34
我想在我建立的一个person表中修改一列PASSWD信息
具体如下
PSAAWD char(6) 可空 我想把他修改成不可空的
出现如下错误:
'Person' 表
- 不能修改表。
ODBC 错误: [Microsoft][ODBC SQL Server Driver][SQL Server]无法将 NULL 值插入列 'PASSWD',表 'mmx.dbo.Tmp_Person';该列不允许空值。INSERT 失败。
[Microsoft][ODBC SQL Server Driver][SQL Server]语句已终止。
请指教谢谢

...全文
22 点赞 收藏 8
写回复
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
也可以用下面的方法:

select distinct * into #t from 你的表
truncate table 你的表
insert into 你的表 select * form #t
drop table #t
回复
在表中增加一个标识字段,再删除就行了.
回复
dlpseeyou 2003-12-11
打开表看看是否你的表中此字段已经有了为null的记录吧
回复
Jlmo 2003-12-11
我能不能不用sql语句进行删除
我在企业管理器中通过打开表的方式可以进行操作吗?
我可以删除记录不相同的列,就是无法删除相同的列?
请指教
回复
CrazyFor 2003-12-11
你在MMC中删除或更新时,因为它要去找能确定你要删除或更新的记录的条件,

就象
delect table where aa=xx and bb=YY
但是这个条件在表中有两条记录,所以系统认为你的条件不充分,所以它不知道应该把两条中的哪一条删除,所以出现上面的提示。
TRY:
select * into #temp from table where ........ --条件选出那两条
delete table where.......

insert into table
select top1 * from #temp

OR
在MMC中一直相下翻页,只到最后一页,再找出你要删除或更新的记录,再删除或更新.
回复
Jlmo 2003-12-11
ok
以上问题解决
我现在还有一个问题
现在我的penson表里面有好多相同的记录
想删掉提示说什么---删除键列信息不正确或信息不足.更新影响到过多行.
就是有太多相同的记录了,怎么解决?谢谢
回复
--先
update Person set [PSAAWD]='' where [PSAAWD] is null

--再:
alter table Person alter column [PSAAWD] char(6) not null
回复
lynx1111 2003-12-11
里面已经有值!你把它改成不可空的,那么那些字段该填什么呢?
设置一个默认值,或者先把空值给填上或删掉
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告