在 Oracle 中创建表会产生“缺少右括号”错误 [重复]
Posted
技术标签:
【中文标题】在 Oracle 中创建表会产生“缺少右括号”错误 [重复]【英文标题】:Creating table in Oracle yields a "Missing right parenthesis" error [duplicate] 【发布时间】:2014-09-21 12:44:14 【问题描述】:我正在尝试创建表,但不断收到以下错误消息:Warning: oci_execute(): ORA-00907: missing right parenthesis in ... on line 14
以下是处理这个问题的代码:
$stid = oci_parse($conn, 'CREATE TABLE tags (
id INT NOT NULL auto_increment,
PRIMARY KEY(id),
name VARCHAR2(64) NOT NULL)')
or die(oci_error($conn));
oci_execute($stid) or die(oci_error($conn));
第 14 行是oci_execute($stid) or die(oci_error($conn));
。
我是 Oracle 新手,不理解这个错误。我用谷歌在 *** 上也找到了很多帖子,但是这些答案都没有能够解决这个问题并正确地创建一个新表。
我在这里做错了什么?
【问题讨论】:
“缺少右括号”错误在这里似乎是一个红鲱鱼。问题是auto_increment
。 ***.com/questions/11296361/…
【参考方案1】:
我相信您习惯于在 mysql 中创建表。 Oracle 没有像 MySQL 那样的 auto_increment。
$stid = oci_parse($conn, 'CREATE TABLE tags (
id INT NOT NULL,
name VARCHAR2(64) NOT NULL),
PRIMARY KEY(id)')
Oracle 使用对象 Sequence
创建一个 auto_increment 值。
假设您拥有正确的权限,如何创建序列的示例。
CREATE SEQUENCE "CCAD"."AUTH_GROUP_SQ"
MINVALUE 1
MAXVALUE 999999999999
INCREMENT BY 1
START WITH 91
CACHE 20
NOORDER NOCYCLE;
与插入触发器一起使用。
create or replace TRIGGER "AUTH_GROUP_TR"
BEFORE INSERT ON "AUTH_GROUP"
FOR EACH ROW
WHEN (new."ID" IS NULL)
BEGIN
SELECT "AUTH_GROUP_SQ".nextval
INTO :new."ID" FROM dual;
END;
【讨论】:
我取出了 auto_increment 并且它工作了,但是我需要 id 列来自动递增。有类似的 Oracle 吗? @DemCodeLines 您在帖子中链接到的问题告诉您如何在 Oracle 中实现最接近的东西。 @DemCodeLines - 如果您的版本是12c
或更高版本,请查看Oracle: how to create an identity column?。以上是关于在 Oracle 中创建表会产生“缺少右括号”错误 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
在 oracle 10g 中出现错误 .. 错误:- ORA-00907:缺少右括号
ORACLE SQL 错误 - 缺少右括号 - 查询 [关闭]