这是我第一次使用oracle SQL,并且在创建具有唯一键的表时遇到问题。Oracle - 如何创建一个具有自动增量唯一键ID的表格
我不明白为什么这个自动递增的ID是不工作:
ID BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY
下一个问题我已经是为什么我在我的每个语句得到一个错误:
ORA-00922: missing or invalid option
这里是我的代码:
--
-- Sequence for aout incrment
--
CREATE SEQUENCE IF NOT EXISTS AUTO_INC_SEQ
START WITH 1
INCREMENT BY 1;
--
-- Table Person
--
CREATE TABLE IF NOT EXISTS FITNESS_PERSON
(
ID NUMBER NOT NULL PRIMARY KEY,
FIRST_NAME VARCHAR NOT NULL,
LAST_NAME VARCHAR NOT NULL,
NICK_NAME VARCHAR NOT NULL,
DATE_BIRTH DATE NOT NULL,
PASSWORD VARCHAR NOT NULL,
CONSTRAINT UNIQUE(NICK_NAME)
);
--
-- Table BMR
--
CREATE TABLE IF NOT EXISTS FITNESS_BMR
(
ID NUMBER NOT NULL PRIMARY KEY,
VALUE FLOAT NOT NULL,
VALUE_DATE DATE NOT NULL
);
--
-- M:N for BMR and Person
--
CREATE TABLE IF NOT EXISTS FITNESS_BMR_PERSON
(
BMR_ID NUMBER NOT NULL,
PERSON_ID NUMBER NOT NULL,
FOREIGN KEY(BMR_ID) REFERENCES FITNESS_BMR(ID),
FOREIGN KEY(PERSON_ID) REFERENCES FITNESS_PERSON(ID),
CONSTRAINT BMR_PER PRIMARY KEY(BMR_ID, PERSON_ID)
);
什么是做到这一点的正确方法(创建一个表并与AUT递增密钥是唯一的)。
Oracle不支持'IF NOT EXISTS'用于'CREATE TABLE'或“CREATE SEQUENCE”。它也没有'AUTO_INCREMENT'列。删除这些,你会得到更多。至于'IF NOT EXISTS',只需在每个CREATE TABLE之前放一个'DROP TABLE whatever' - 如果该表尚不存在,你将会得到一个错误,但它是无害的。 – 2013-04-11 19:16:51
如果该表确实存在,并且其中的数据被删除,则很难将其描述为无害。 – 2013-04-11 19:19:36
好的thx。这帮助了很多^^ 我该如何解决我的自动增量问题。因为我希望我的ID通过插入新数据自动增加。 – user1882812 2013-04-11 19:24:49