0

我研究了如何更改表数据类型,并且我了解如何做到这一点,但我无法让它工作。我正在尝试使用以下命令在 APP 中更新我的表 Person:

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 命令部分完成,如果有任何问题,使用 Java-DB 作为我的数据库。

4

3 回答 3

2

它已经在这里得到了回答。您基本上需要创建具有所需数据类型的新列并删除旧列。但是,如果您查看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;
于 2013-01-28T20:05:08.777 回答
1

大多数数据库需要特定权限才能使用 DDL(数据定义语言)命令,例如ALTER TABLE. 很多时候,应用层中使用的数据库凭据在数据库中没有 DDL 权限。

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

于 2013-01-28T20:03:23.707 回答
1

我没有要测试的 JavaDB,但根据文档,它应该是;

ALTER TABLE APP.PERSON ALTER uName SET DATA TYPE VARCHAR(20)
于 2013-01-28T20:08:43.217 回答