【问题标题】:Inserting information from other tables从其他表中插入信息
【发布时间】:2016-09-24 23:58:42
【问题描述】:

我正在尝试将值插入到此处的新表中。但是,我得到(ORA-00001:违反唯一约束(MYSCHEMA.SYS_C007106)),它将condo_id 声明为唯一。即使我没有将condo_id 插入到新表中。我该如何解决这个问题?

insert into large_condo
    select location_num, unit_num, bdrms, baths, condo_fee, owner_num
      from condo_unit
     where sqr_ft > 1500;

额外信息:

condo_id 是触发器。如何绕过触发器?

【问题讨论】:

  • 如果您显示large_condo 表的架构是明智的,因为没有它,我们不得不猜测您的问题是什么。大纲模式应包括所有列及其类型,以及任何约束(尤其是唯一或主键约束)以及表上的任何触发器。我们可能不需要condo_unit 表的模式。 large_condocondo_unit 表上的视图是否有任何危险? (不太可能,但更有趣的事情已经知道了!)
  • 如果您使用未列出列的insert 语句,这意味着您必须为每一列提供一个值(否则,Oracle 将不知道您是哪个列的子集试图填充)。如果您实际上正在运行您在此处发布的insert 语句,则必须为condo_id 插入一个值。我不知道那是哪一列,但主键通常是表的第一列,我猜你正在尝试使用location_num 作为condo_id,这可能没有意义并且不是不是独一无二的。

标签: sql oracle


【解决方案1】:

我能想到的两种可能性:

  1. condo_id 列设置了默认值。您应该可以通过查询USER_TAB_COLUMNS 看到这一点。

  2. 有一个触发器可以为condo_id 列设置一个值。您可以在USER_TRIGGERS 中查找触发器名称,然后在USER_SOURCE 中查看触发器源。

【讨论】:

    【解决方案2】:

    您可能在表中的 condo_unit 上有一个主键。如果您再次插入相同的值,您将面临此错误。

    或者,如果您在 NOT NULL 列中插入空值。 或者可以在其上定义索引。描述表格并验证它们。

    【讨论】:

      【解决方案3】:

      谢谢大家,我所做的是转到对象浏览器并禁用约束

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-08-09
        • 2011-12-03
        • 2015-07-29
        • 2013-04-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多