如何使用SQL Developer设置自动递增列
在Oracle数据库中,不像MySQL一样,不支持自动递增的功能。但是你可以通过一些额外的努力来实现这个功能。
首先,创建一个序列(sequence):
CREATE SEQUENCE S_MYTABLE START WITH 1 INCREMENT BY 1 CACHE 10;
然后,创建一个触发器(trigger):
CREATE OR REPLACE TRIGGER T_MYTABLE_ID BEFORE INSERT ON MYTABLE REFERENCING NEW AS NEW FOR EACH ROW BEGIN if(:new.ID is null) then SELECT S_MYTABLE.nextval INTO :new.ID FROM dual; end if; END; / ALTER TRIGGER "T_MYTABLE_ID" ENABLE;
这样,每次向表中插入一条新记录时,触发器会自动将ID列的值设置为序列的下一个值。
从2012年开始,情况有所改变。随着Oracle数据库12c的推出,现在你可以更简单地实现自动递增的功能。具体操作请参考这篇文章:thatjeffsmith.com/archive/2014/01/…
通过创建序列和触发器,你可以在Oracle数据库中实现类似自动递增的功能。这种方法在以前是常用的,但现在也可以通过更简单的方式实现。
在使用Oracle SQL Developer时,如果想要将主键设置为自动递增,需要设置ID列的属性。
- 右键点击表格,选择“Edit”。
- 在“Edit”窗口中,选择“columns”,然后选择您的主键列。
- 转到ID Column选项卡,选择Column Sequence作为类型。这将创建一个触发器和一个序列,并将序列与主键相关联。
查看下面的图片以更好地理解。
非常好的回答。然而,我想补充一点,重要的是要注意“在插入之前检查列是否为空”的复选框,这可能不是您想要的。当使用序列ID时,通常不希望它从其他地方填充(可能会有例外情况,但请确保考虑一下)。
非常好的回答。对我来说完美运行。
非常好的回答。谢谢。我也给你点赞了 🙂