我研究过如何更改表数据类型,我知道如何做,但我无法让它工作。我正在尝试使用以下命令更新APP中的表人员:
ALTER TABLE APP.PERSON ALTER uName varchar;
到目前为止我尝试过:
我哪里错了?我正在使用在Mac OS X上运行的Netbeans 7.3 Beta 2,这一切都是在Netbeans的SQL Commands部分内完成的,如果有任何重要的话,使用Java-DB作为我的数据库。
答案 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)