我想知道如何将以下的Oracle PL / SQL代码块转换为SQLite,以便可以在Objective C程序中使用它:
SELECT CUSTOMERS_ID_SEQ.NEXTVAL
INTO V_CUSTOMER_ID
FROM DUAL;
其中V_CUSTOMER_ID
是CUSTOMER_ID%TYPE NOT NULL
,和
CUSTOMER_ID
在表中是整数类型。
答案 0 :(得分:1)
SQLite没有序列。
要获取自动增量ID,您必须使用INTEGER PRIMARY KEY列。
答案 1 :(得分:1)
CL是对的。 简短回答:声明为INTEGER PRIMARY KEY的列将自动递增。
答案很长:如果将一个表的列声明为INTEGER PRIMARY KEY,那么无论何时在表的该列中插入NULL,NULL都会自动转换为一个大于最大值的整数。该列中所有其他行的列,如果表为空,则为1。 (如果是最大可能的整数键,则为9223372036854775807,则随机选择一个未使用的键值。)例如,假设您有一个这样的表:
CREATE TABLE t1(
a INTEGER PRIMARY KEY,
b INTEGER
);
使用此表,语句
INSERT INTO t1 VALUES(NULL,123);
is logically equivalent to saying:
INSERT INTO t1 VALUES((SELECT max(a) FROM t1)+1,123);
有一个名为 sqlite3_last_insert_rowid()的函数,它将返回最近插入操作的整数键。
请查看以下有关SQLite的常见问题解答帮助:http://sqlite.org/faq.html#q1