刚发过一遍的问题:关于ALTER TABLE,这回给十倍的分——二百分!!!

fireseed 2002-05-11 02:15:57
我在BCB写的程序中建立了一个表TABLE1
有两个属性:
ID INTEGER (request);
NAME CHAR(20);

可是指行SQL语句:
ALTER TABLE TABLE1 DROP ID
没有问题
ALTER TABLE TABLE1 DROP NAME
出错:“column not found for table!”

为什么?????
...全文
40 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
TR@SOE 2002-05-14
  • 打赏
  • 举报
回复
谁说的!我在创建表的时候从来就不用大写字母的,都是小写字母。从来就没有碰到过你说的这样的问题!

我看你是来搅IB的局的吧?
fireseed 2002-05-13
  • 打赏
  • 举报
回复
我自己解决了!你们全都错了!!!!!
IB6.5的内核有错,属性名用小写建的表,修改时就会找不到属性,用大写就没问题,是Bug,老板看过了!!!!!

这贴子先在这儿放两天以警后人,两天后结贴,上面的人平分,下面的人不给了,对不住!
iYoung 2002-05-12
  • 打赏
  • 举报
回复
[NAME]
fireseed 2002-05-11
  • 打赏
  • 举报
回复
我的表是在我的程序里动态建的我只是默认的添加了一个ID NOT NULL和一些自定义字段,可是ID可以删,其它的字段一个也删不掉!!!!
fireseed 2002-05-11
  • 打赏
  • 举报
回复
我说过了!字段名:dog、cat、lihongzhi、shit都试过了,就是删不成!!!!!
建表时如果request参数为true就可以删,为什么???!!!!!
RedProgramer 2002-05-11
  • 打赏
  • 举报
回复
确实有些名称是不能用的,改名称试一下
lya_lya 2002-05-11
  • 打赏
  • 举报
回复
哦。
把数据库表里NAME 字段 改为 NAME1 。
再把SQL 串 里的NAME 改为 NAME1 。
513 2002-05-11
  • 打赏
  • 举报
回复
是你的自段名有问题,你换一个字段名,如你不能使用Date做字段名一样
hotxu 2002-05-11
  • 打赏
  • 举报
回复
语法没有错误,你可放在SQL EXPLORER中执行试一试。
短歌如风 2002-05-11
  • 打赏
  • 举报
回复
ALTER TABLE TABLE1 DROP "NAME"
加上双引号试试.
fireseed 2002-05-11
  • 打赏
  • 举报
回复
用test1、test2……也是一样的啊!!!!!

有没有高手???来帮我看看啊,楼上楼下的,请你们帮我多宣传宣传,今天要向老板交活啊!!!!!!!!

救人一命胜造七级浮屠
jishiping 2002-05-11
  • 打赏
  • 举报
回复
字段名不要用NAME,用其它的名字试试看。NAME可能是关键字(我没有用过IB,只是猜测)。
Libran 2002-05-11
  • 打赏
  • 举报
回复
改:
ALTER TABLE TABLE1 DROP NAME -->
ALTER TABLE TABLE1 DROP COLUMN [NAME]
shymeng 2002-05-11
  • 打赏
  • 举报
回复
ALTER TABLE tablename DROP { [CONSTRAINT] constraint_name | COLUMN column_name }

指定从表中删除 constraint_name 或者 column_name。如果兼容级别小于或等于 65,将不允许 DROP COLUMN。可以列出多个列或约束。下面的列不能除去:

被复制列。

用在索引中的列。

用在 CHECK、FOREIGN KEY、UNIQUE 或 PRIMARY KEY 约束中的列。


有相关联的默认值(由 DEFAULT 关键字定义)的列,或绑定到默认对象的列。


绑定到规则的列。
如果要删除的列带索引则先除索引
另请参考一下:
http://www.csdn.net/expert/topic/638/638640.xml?temp=.6508142
http://www.csdn.net/expert/topic/669/669858.xml?temp=.2847864
http://www.csdn.net/expert/topic/405/405078.xml?temp=.6792566
祝您好运!!!
TR@SOE 2002-05-11
  • 打赏
  • 举报
回复
这个删除字段定义的SQL没有问题,我刚在我的IBCONSOLE里测试通过。

你把这个表的完整的结构贴出来。
fireseed 2002-05-11
  • 打赏
  • 举报
回复
确实有这个列啊,而且里面有数据的!
但不管里面有没有数据,一样出错
“column not found for table!”
cmsoft 2002-05-11
  • 打赏
  • 举报
回复
这边谁不知道SDK了?我不明白
你这句话确实没有错的。如果表中有此列的话,并且列名也是正确的话
shymeng 2002-05-11
  • 打赏
  • 举报
回复
如果说表级别上的CREATE语句与行政级别上的INSERT语句相似,DROP语句与DELETE语句相似,那么就可以说ALTER与UPDATE相似。ALTER用来对数据库现存的元素做更改。
DROP和CREATE二者几乎在所有数据库中存在,相反,很多数据库都不提供ALTER语句。如果想对现存的元素做改动的话,就必须先删除它,再重新创建它。本书将讨论那些数据库支持ALTER语句。
ALTER TABLE 语句用来对表的模式做改动。可以添加列,也可以改变列的数据类型(只要列中的数据遵循新的数据类型)。根据您正在使用的数据库的不同,还可以用ALTER TABLE来改变数据本身在磁盘上的存储方式。需要注意的一件事是:列不能用ALTER TABLE语句来删除。如果希望从表中删除列,就必须撤消表并重新创建它(去除希望删除的列)。
提示:很多数据库都不支持ALTER TABLE 语句。要对那些数据库中的表做那些数据库中表的模式作变动,必须撤消表并用要做的改动重新创建它们。
...
添加列的ALTER TABLE语法:
ALTER TABLE table
ADD (column datatype [DEFAULT expression]
[REFERENCE table (column)]
[CHECK condition]
ALTER TABLE表的限制级别的语法:
ALTER TABLE table
ADD ([CONSTRAINT name CHECK comparison]
[(conlumn(s) REFERENCES table(column)]
修改表的语法:
ALTER TABLE table
MODIFY column [data type]
[DEFAULT expression]
[REFERENCES table(column)]
[CHECK constraint]
修改列的基本规则是:被修改的列中所有的数据在修改后都必须满足列的标准。例如,想要将VARCHAR字段变为NUMBER字段,这种转换就不会发生作用。同样,如果想要缩短VARCHAR列尺寸,而列中的一些值又比新的尺寸要长,那么这种转换也不会发生作用。
----以上摘自电子工业出版社的《SQL实用全书》 Special Edition Using SQL [美]Rafe Colburn著 贺 民 邓英才 等译 2001年6月第一次印刷
第67-68页
fireseed 2002-05-11
  • 打赏
  • 举报
回复
ALTER TABLE TABLE1 DROP NAME /*确实存在此列!*/
出错:“column not found for table!”

为什么?????
cmsoft 2002-05-11
  • 打赏
  • 举报
回复
没有问题啊
加载更多回复(2)

13,873

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧