openGauss中创建唯一索引和创建唯一约束的区别

这篇具有很好参考价值的文章主要介绍了openGauss中创建唯一索引和创建唯一约束的区别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

今天一个一起搬砖的兄弟同事过来问,为什么他的索引删不掉?我过去看了下:
执行脚本:

drop index constraint_unique

报错如下:
openGauss中创建唯一索引和创建唯一约束的区别

执行时出错 确认要继续执行吗?
单击“详细信息”了解详情。

SQL错误码: = 2BP01
ERROR: cannot drop index constraint_unique because constraint constraint_unique on table t1 requires it
Hint: You can drop constraint constraint_unique on table t1 instead.
行号: 19

报错大意是:不能删除索引constraint_unique因为约束constraint_unique在表t1上引用了它。
暗示:你可以删除约束constraint_unique在表t1上来代替它。
于是我执行drop constraint的语句,删除成功。
alter table t1 drop CONSTRAINT constraint_unique;
究其原因,该索引并不是通过create index直接创建的,而是在创建唯一约束的时候顺带创建的。实验发现,openGauss在创建唯一约束的时候,同时会创建一个唯一索引,当然在删除唯一约束的同时,也会删除掉创建唯一约束时附带创建的唯一索引;
openGauss中创建唯一索引和创建唯一约束的区别

但是在创建唯一索引的时候,并不会同时显式创建一个唯一约束。通过创建索引直接创建的索引,好像有点绕咔咔咔,则可以直接通过drop index的方式删除。
openGauss中创建唯一索引和创建唯一约束的区别

再对比下创建唯一索引和唯一约束后,在插入重复数据时的区别:

  1. 唯一索引:插入重复数据时报错,插入时也报唯一约束冲突
    openGauss中创建唯一索引和创建唯一约束的区别

ERROR: duplicate key value violates unique constraint “idx_unique”
Detail: Key (c1)=(1) already exists.

  1. 唯一约束:
    openGauss中创建唯一索引和创建唯一约束的区别

ERROR: duplicate key value violates unique constraint “constraint_unique”
Detail: Key (c1)=(1) already exists.
那么约束是否存在呢?我对于增加唯一约束的场景,尝试执行 drop constraint的操作,系统会报错constraint不存在,这说明确实没有创建约束。
openGauss中创建唯一索引和创建唯一约束的区别

执行时出错 确认要继续执行吗?
单击“详细信息”了解详情。
SQL错误码: = 42704
ERROR: constraint “idx_unique” of relation “test” does not exist
行号: 2

来自:如鱼得水文章来源地址https://www.toymoban.com/news/detail-405835.html

到了这里,关于openGauss中创建唯一索引和创建唯一约束的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue 2和Vue 3路由Router创建的区别简记(在main.js文件中引入的区别和router的js文件中创建语法的区别)

    1、版本的搭配: Vue 2到Vue 3的改版升级,同样的带来Vue Router的升级。创建Vue项目之后,我们可以在package.json文件中看到,Vue 2创建的项目往往是与Vue Router 3.X版本搭配的,而Vue 3创建的项目与Vue Router 4.X版本搭配。 Vue 3搭配Vue Router 4.X版本: Vue 2搭配Vue Router3.X版本: 2、在main

    2024年02月08日
    浏览(56)
  • SQL语句 -非空约束 - 唯一约束 - 主键约束 - 默认约束 -外键约束

    约束的概念 : 约束是作用于表中列上的规则,用于限制加入表的数据 约束的存在保证了数据库中数据的正确性、有效性和完整性 约束的分类如下 : 约束名称 描述 非空约束 保证列中所有数据不能有null值 NOT NULL 唯一约束 保证列中所有数据各不相同 UNIQUE 主键约束 主键

    2024年01月16日
    浏览(90)
  • 【⑪MySQL | 约束(一)】概念 | 非空 | 唯一 | 主键 | 自增长约束

    ✨欢迎来到小K的MySQL专栏,本节将为大家带来MySQL约束的概念 | 非空约束 | 唯一约束 | 主键约束 | 自增长约束的分享 ✨ 1. 约束(Constraint)概念 1.1 为什么需要约束 对于已经创建好的表,虽然字段的数据类型决定了所能存储的数据类型,但是表中所存储的数据是否合法并没有进行

    2024年02月16日
    浏览(42)
  • PostgreSQL 重复键违反唯一约束

    直接在数据表中插入了几条测试数据,后又手动删除,导致后面插入数据的时候报主键冲突: ERROR: duplicate key value violates unique constraint “tableName_pkey” DETAIL: Key (id)=(1) already exists. 关于自增字段,postgresql中没有自增字段,用的是sequence。 即使采用INSERT IGNORE的方式或者REPLACE

    2024年02月13日
    浏览(59)
  • SQL PRIMARY KEY 约束- 唯一标识表中记录的关键约束

    SQL NOT NULL 约束用于强制确保列不接受 NULL 值。这意味着该字段始终包含一个值,而不允许插入新记录或更新记录时不提供此字段的值。 以下 SQL 确保在创建 \\\"Persons\\\" 表时,“ID”、“LastName” 和 “FirstName” 列将不接受 NULL 值: 要在已创建的 \\\"Persons\\\" 表上的 \\\"Age\\\" 列上创建 NOT

    2024年02月05日
    浏览(54)
  • 【前端面试3+1】12 toktn验证过程、面向对象特性、webpack和vite的区别、【字符串中的第一个唯一字符】

    用户登录:用户提供用户名和密码进行登录。 服务器验证:服务器接收到用户提供的用户名和密码,进行验证。 生成token:如果用户名和密码验证通过,服务器会生成一个token,通常包含一些加密的信息,如用户ID、过期时间等。 返回token:服务器将生成的token返回给客户端(

    2024年04月18日
    浏览(75)
  • 【postgresql 基础入门】表的约束(二) 唯一unique、非空not null、check、exclusion约束,原理机制以及多列组合约束

    ​ 专栏内容 : postgresql内核源码分析 手写数据库toadb 并发编程 个人主页 :我的主页 管理社区 :开源数据库 座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物. 在数据库中,数据类型可以限制数据存储的大小,也能在一定程度上限制存储的数据种类,但是对于数

    2024年04月08日
    浏览(56)
  • Mysql-InnoDB索引:普通索引、主键索引、唯一索引、组合索引

    事务方面 InnoDB支持事务,MyISAM不支持事务。这是Mysql将默认存储引擎从MyISAM变成InnoDB的重要原因之一 外键方面 InnoDB支持外键,而MyISAM不支持。对一个包含外键的InnoDB表转为MyISAM会失败 索引层面 InnoDB是聚集(聚簇)索引,MyISAM是非聚集(非聚簇)索引。 MyISAM 支持 FULLTEXT 类型

    2024年02月03日
    浏览(52)
  • SqlServer设置唯一键/索引

    1、首先,打开sqlserver软件,右键点击要设计的表选择设计,选中一列右键设置主键,该列就设置成了主键了,删除主键同理,设置好了前面有一把钥匙。   2、设置唯一键和索引键也是右键选中的列(空白的地方也行),点击‘索引/键’。   3、这里注意,刚刚选择的列不是

    2024年02月16日
    浏览(37)
  • openGauss学习笔记-204 openGauss 数据库运维-常见故障定位案例-重建索引失败

    204.1 重建索引失败 204.1.1 问题现象 当Desc表的索引出现损坏时,无法进行一系列操作,可能的报错信息如下。 204.1.2 原因分析 在实际操作中,索引会由于软件或者硬件问题引起崩溃。例如,当索引分裂完发生磁盘空间不足、出现页面损坏等问题时,会导致索引损坏。 204.1.3 处

    2024年01月24日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包