亚音速Oracle自动增量问题

时间:2010-08-31 14:43:38

标签: oracle subsonic auto-increment

我认为这个问题以前已经完成,但我找不到明确的答案。 我已将SQl Server 2005数据库迁移到oracle 11.我正在使用亚音速2.1。我已经创建了所有数据层类,并且生成了所有内容。但是当我尝试在数据库中插入时,问题就出现了:除非你定义一个序列和一个触发器,否则Oracle在主键中没有自动增量。因此,Subsonic使用id列定义控制器中的所有Insert方法。有没有办法避免亚音速不生成带有id列的Insert方法,我将使用触发器和序列生成?

非常感谢

SToledo

更新 我终于在Subsonic 2.1源代码中做了一个可怕的黑客(我感到惭愧)。我确实修改了OracleDataProvider,将id-named列设置为autoincrement为true。然后,模板将按照我的预期运行。我知道这是一个可怕的黑客,但它对我有用。 谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

不了解Subsonic,但如果表的数量相对较小,您可以修改BEFORE-INSERT触发器以禁用无效检查:

CREATE OR REPLACE TRIGGER trig_BI
   BEFORE INSERT
   ON tab_name
   FOR EACH ROW
BEGIN
   --IF :NEW.key_column IS NULL
   --THEN
      SELECT tab_seq.NEXTVAL INTO :NEW.key_column FROM DUAL;
   --END IF;
END;