加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

SQLPlus AUTO_INCREMENT错误

发布时间:2020-12-12 16:25:24 所属栏目:百科 来源:网络整理
导读:当我尝试在SQLPlus中运行以下命令时: CREATE TABLE Hotel(hotelNo NUMBER(4) NOT NULL AUTO_INCREMENT,hotelName VARCHAR(20) NOT NULL,city VARCHAR(50) NOT NULL,CONSTRAINT hotelNo_pk PRIMARY KEY (hotelNo)); 我收到以下错误: (hotelNo NUMBER(4) NOT
当我尝试在SQLPlus中运行以下命令时:
CREATE TABLE Hotel
(hotelNo NUMBER(4) NOT NULL AUTO_INCREMENT,hotelName VARCHAR(20) NOT NULL,city VARCHAR(50) NOT NULL,CONSTRAINT hotelNo_pk PRIMARY KEY (hotelNo));

我收到以下错误:

(hotelNo NUMBER(4) NOT NULL AUTO_INCREMENT,*
ERROR at line 2:
ORA-00907: missing right parenthesis

我究竟做错了什么?

许多人会抱怨这不是Oracle中的标准功能,但是当它在您的CREATE TABLE命令之后就像另外两个命令一样简单时,我看不出有任何理由在每个插入上使用花哨的SQL.
首先让我们创建一个简单的表格来玩.
SQL> CREATE TABLE test
(id NUMBER PRIMARY KEY,name VARCHAR2(30));
Table created.

现在我们假设我们希望ID成为自动增量字段.首先,我们需要一个序列来从中获取值.

SQL> CREATE SEQUENCE test_sequence
START WITH 1
INCREMENT BY 1;
Sequence created.

现在我们可以在表上的BEFORE INSERT触发器中使用该序列.

CREATE OR REPLACE TRIGGER test_trigger
BEFORE INSERT
ON test
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
SELECT test_sequence.nextval INTO :NEW.ID FROM dual;
END;
/


SQL> INSERT INTO test (name) VALUES ('Jon');
1 row created.

SQL> INSERT INTO test (name) VALUES (’Bork’);
1 row created.

SQL> INSERT INTO test (name) VALUES (’Matt’);
1 row created.

SQL> SELECT * FROM test;

ID NAME
———- ——————————
1 Jon
2 Bork
3 Matt

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读