【问题标题】:Create table syntax not working in hsql创建表语法在 hsql 中不起作用
【发布时间】:2012-10-23 18:37:00
【问题描述】:

我是 hsqldb 的新手。我正在开发简单的应用程序来获取用户的一些输入。所以搜索了嵌入式数据库,发现 hsqldb 是我要求的解决方案。

我有一些创建表的语法,但它会引发异常。

(此查询使用 Netbeans 数据库服务执行)

查询:

CREATE TABLE  company (
  comp_name varchar(100) NOT NULL,
  comp_id int(40) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (comp_id)
);

CREATE TABLE  company (
  comp_name varchar(100) NOT NULL,
  comp_id int(40) NOT NULL IDENTITY
);

hsql db 报错:

Error code -5581, SQL state 42581: unexpected token: ( : line: 3
Line 2, column 1

Execution finished after 0 s, 1 error(s) occurred.

请帮帮我..

提前致谢..

干杯...!

【问题讨论】:

  • 我已使用以下查询来满足我的要求。 CREATE TABLE company (comp_name varchar(100) NOT NULL, comp_id INTEGER GENERATED BY DEFAULT AS IDENTITY(start with 1));

标签: java hsqldb create-table


【解决方案1】:

使用INT or INTEGER 不指定字段长度,因为 Int 类型字段不需要它。 VARCHARDECIMALetc 需要它。输入字段。

 CREATE TABLE  company (
   comp_name varchar(100) NOT NULL,
   comp_id int
 );

自动递增:

 ALTER TABLE company ALTER COLUMN comp_id 
 SET GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1);

或者:

 CREATE TABLE  company (
   comp_name varchar(100) NOT NULL,
   comp_id int GENERATED BY DEFAULT AS IDENTITY 
                                         (START WITH 1, INCREMENT BY 1) NOT NULL
 );

您也可以添加 PRIMARY_KEY 如下:

 CREATE TABLE  company (
   comp_name varchar(100) NOT NULL,
   comp_id INTEGER NOT NULL,
   PRIMARY KEY (comp_id)
 );

【讨论】:

  • 谢谢.. 如果我执行第一个查询工作正常。但是第二个查询抛出异常错误代码-5532, SQL state 42532: primary key already exists Line 1, column 2
  • @DhinaKaran: IDENTITY 关键字适合您。 我认为您对第一个查询本身没问题,否则请尝试更新后的第二个查询。
  • 是的。它的工作但我仍然有插入查询的问题 INSERT INTO company (comp_name) VALUES('ABC');错误代码 -10,SQL 状态 23502:完整性约束违规:NOT NULL检查约束; SYS_CT_17649 表:COMPANY 列:COMP_ID
  • 对于查询 1:错误代码 -5581,SQL 状态 42581:意外令牌:(:行:3
  • @DhinaKaran 尝试将NOT NULL 放在最后并使用 GENERATED BY DEFAULT。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-11
  • 2012-02-27
  • 1970-01-01
  • 2017-06-28
  • 2012-08-26
  • 2023-03-06
  • 2018-07-23
相关资源
最近更新 更多