Oracle数据库中的自增主键
我想在 SQL Server 的列中实现标识或自动递增值:
CREATE TABLE RollingStock
(
Id NUMBER IDENTITY(1,1),
Name Varchar2(80) NOT NULL
);
如何做到这一点?
I would like to achieve an identity or auto-incrementing value in a column ala SQL Server:
CREATE TABLE RollingStock
(
Id NUMBER IDENTITY(1,1),
Name Varchar2(80) NOT NULL
);
How can this be done?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
正如 Orbman 所说,执行此操作的标准方法是使用序列。大多数人还会做的是将其与插入触发器结合起来。因此,当插入没有 ID 的行时,触发器会触发,从序列中为您填写 ID。
这是在 Oracle 中使用触发器有意义的少数情况之一。
As Orbman says, the standard way to do it is with a sequence. What most people also do is couple this with an insert trigger. So, when a row is inserted without an ID, the trigger fires to fill out the ID for you from the sequence.
This is one of the few cases where it makes sense to use a trigger in Oracle.
如果您确实不关心主键保存什么,则可以对主键列使用 RAW 类型,该列保存系统生成的二进制形式的 guid。
If you really don't care what the primary key holds, you can use a RAW type for the primary key column which holds a system-generated guid in binary form.