将PL / SQL代码转换为SQLite

时间:2014-01-27 07:22:39

标签: sql database oracle plsql sqlite

我想知道如何将以下的Oracle PL / SQL代码块转换为SQLite,以便可以在Objective C程序中使用它:

SELECT CUSTOMERS_ID_SEQ.NEXTVAL
INTO V_CUSTOMER_ID
FROM DUAL;

其中V_CUSTOMER_IDCUSTOMER_ID%TYPE NOT NULL,和 CUSTOMER_ID在表中是整数类型。

2 个答案:

答案 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