我正在尝试创建一个表,但不断收到以下错误消息: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的新手,并不理解这个错误。我使用Google并在StackOverflow上发现了很多帖子,但这些答案都没有能够解决这个问题并正确创建一个新表。
我在这里做错了什么?
答案 0 :(得分:2)
我相信你曾经在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;