【问题标题】:How to insert value in Sequence ID field of Oracle from SQL?如何从 SQL 在 Oracle 的序列 ID 字段中插入值?
【发布时间】:2012-12-04 07:34:59
【问题描述】:

我想在 Oracle 表中插入一行。我有不能在插入脚本中发送mySeq.nextVal 的限制。如果我省略了那个 ID 字段,应用程序会尝试在那里插入 NULL。有一个在插入前使用触发器的解决方案。但我不想使用触发器。

有没有其他方法可以在 Oracle 表的 Sequence 字段中插入值?我可以更改 DDL 并将 mySeq.nextVal 作为 ID 字段的默认值吗?还是有其他想法?

【问题讨论】:

  • 很遗憾,您不能将序列用作默认列值。你似乎已经排除了两种完美的方式来实现你所需要的。最好的方法是直接插入 seq.nextval,第二好的方法是使用触发器。为什么你不能使用这两种方法?请参阅此处了解更多信息:stackoverflow.com/questions/10613846/…
  • @LordPeter:这个令人讨厌的限制(你不能使用 nextval 作为默认值)最终将在即将推出的 12g 版本中删除。
  • 从这里,我只有使用触发器的解决方案。

标签: oracle insert


【解决方案1】:

不幸的是,您无法在插入语句中使用 nextval 并且您想要避免触发器在这里是不一致的。如果出于某种原因您不能为此目的在表上放置触发器,则可以在表上创建一个视图并在视图上放置一个“代替”触发器以插入到带有 nextval 的基础表中。不过我不会推荐它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-21
    • 1970-01-01
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-22
    • 1970-01-01
    相关资源
    最近更新 更多