在现代版本的Oracle中,是否有一些“标准”(存储过程,附加的CREATE语法等)方法来设置具有auto_increment / identity样式列的表,或者我们仍然无法手动创建表,创建序列,并创建触发器。
更新:我发现Oracle没有auto_increment的概念。我感兴趣的是,如果任何标准Oracle工具已经自动化了序列和触发器的创建,或者如果DBA留下来创建所需的查询/命令来创建序列并触发它们自己。
答案 0 :(得分:5)
如果你想要一个顺序递增的有序值,那么不,SEQUENCE
是唯一的选择。
如果您只想要一个身份,请使用SYS_GUID()
答案 1 :(得分:3)
Oracle SQL Developer为您提供了一个选项,可以自动创建“创建或替换触发器”代码,该代码从序列中填充表的主键。为此,请从导航树中右键单击表名>触发器>创建(来自序列的PK)。但它不会为您创建序列。
答案 2 :(得分:3)
您实际上不需要触发器,只需在将新行填充到表中时引用序列的下一个值。如果愿意,您甚至可以在多个表之间共享一个序列。
答案 3 :(得分:2)
自动递增?不,谢谢。你被序列所困扰(尽管通常稍微不方便,但这些序列通常更好)。
但您可以使用GUID。 Oracle可以使用SYS_GUID()函数代替。