我对目前的情况感到非常困惑:
我的ruby on rails应用程序正在生成以下查询:
INSERT INTO“MEMBER_ROLES”(“ID”,“NAME”,“ORG_ID”)VALUES(:a1,:a2,:a3)[[“id”,55],[“name”,“test6”] ,[“org_id”,“2”]]
查询似乎有效,我可以在数据库表中看到上述记录,但“id”字段未设置为“55”而是“56”。
每次插入都会发生这种情况。插入的实际主键总是比上面的插入语句看起来多1个。
我不确定这是否与我的表格创建方式有关?
CREATE TABLE member_roles
(
id NUMBER(38,0) primary key,
name VARCHAR2(200) not NULL,
org_id VARCHAR2(200) not NULL,
created_at DATE default sysdate not null,
updated_at DATE default sysdate not null
)
CREATE SEQUENCE MEMBER_ROLES_SEQ;
set define off;
CREATE OR REPLACE TRIGGER member_roles_bir
BEFORE INSERT ON MEMBER_ROLES
FOR EACH ROW
BEGIN
SELECT MEMBER_ROLES_SEQ.NEXTVAL
INTO :new.id
FROM dual;
END;
答案 0 :(得分:1)
如何获得用于插入的ID?你从序列中得到它吗? 触发器将使用下一个序列值覆盖您的id。
你可以尝试插入id = -99,你会发现它也会被覆盖......