使用SQL命令ALTER更改表中的数据类型

时间:2013-01-28 19:59:55

标签: sql netbeans sqlcommand alter

我研究过如何更改表数据类型,我知道如何做,但我无法让它工作。我正在尝试使用以下命令更新APP中的表人员:

ALTER TABLE APP.PERSON ALTER uName varchar;

到目前为止我尝试过:

  • 使用Modify但意识到,在收到错误之后,这确实应该是ALTER。
  • 将uName更改为UNAME。
  • 将其更改为varchar2的数据类型。
  • 在末尾添加数据类型'(20)'和'NOT NULL'的大小。

我哪里错了?我正在使用在Mac OS X上运行的Netbeans 7.3 Beta 2,这一切都是在Netbeans的SQL Commands部分内完成的,如果有任何重要的话,使用Java-DB作为我的数据库。

3 个答案:

答案 0 :(得分:2)

在SO上已经回答here。您基本上需要创建具有所需数据类型的新列并删除旧列。但是,如果您查看Apache Derby doc,则会有一个SET DATA TYPE命令,请尝试类似

的内容
ALTER TABLE APP.PERSON ALTER UNAME SET DATA TYPE VARCHAR(30)

修改

如果上面的代码不起作用,那么您只需按照我之前的建议重新创建该列。

ALTER TABLE APP.PERSON ADD COLUMN UNAME_NEW VARCHAR(30);
UPDATE APP.PERSON SET UNAME_NEW = UNAME;
ALTER TABLE APP.PERSON DROP COLUMN UNAME;
RENAME COLUMN APP.PERSON.UNAME_NEW TO UNAME;

答案 1 :(得分:1)

大多数数据库都需要特定权限才能使用ALTER TABLE等DDL(数据定义语言)命令。通常,应用程序层中使用的数据库凭据在数据库中没有DDL权限。

验证您使用的连接是否有权运行ALTER TABLE。如果确实如此,请发布您正在使用的特定代码和任何特定的错误消息。

答案 2 :(得分:1)

我没有JavaDB可以测试,但根据the documentation它应该是;

ALTER TABLE APP.PERSON ALTER uName SET DATA TYPE VARCHAR(20)