精华内容
下载资源
问答
  • 1、创建数据库,创建主键约束; --CREATE RELATION TABLE AND ADD PRIMARY KEY CREATE TABLE CATEGORY ( CATEGORYID VARCHAR2(10), ...因为删除约束条件需要约束的名称,这样虽然有主键约束但是没有约束名称,

    1、创建数据库,创建主键约束;

    --CREATE RELATION TABLE AND ADD PRIMARY KEY
    CREATE TABLE CATEGORY
    (
    	CATEGORYID VARCHAR2(10),
    	CATEGORYNAME VARCHAR2(30),
    	PRIMARY KEY(CATEGORYID)
    );


    因为删除约束条件需要约束的名称,这样虽然有主键约束但是没有约束名称,是不能删除的。


    你创建主键的时候没有对主键进行命名,Oracle自动分配了一个约束名称,但约束名称不是column_name(列名称)。

    查找ORACLE系统的约束表  USER_CONS_COLUMNS;

    SELECT * FROM USER_CONS_COLUMNS;


    找到对应表的对应约束的名称;


    然后就可以使用修改表语句删除约束了;

    ALTER TABLE CATEGORY DROP CONSTRAINT CONS134218750;

    ALTER TABLE CATEGORY DROP CONSTRAINT CONS134218750;










    展开全文
  • 在业务中有个唯一约束A,当该业务进行逻辑删除后(设置标记为删除状态),再往唯一约束列插入相同的值时,此时会报Duplicate entry,但在业务上,该值是必须要插入的。 二、解决思路 方案一:不采用逻辑删除,直接...

    一、问题场景

    在业务中有个唯一约束A,当该业务进行逻辑删除后(设置标记为删除状态),再往唯一约束列插入相同的值时,此时会报Duplicate entry,但在业务上,该值是必须要插入的。

    二、解决思路

    方案一:不采用逻辑删除,直接物理删除

    方案二:  新建历史表

    主表进行物理删除,同时将删除的记录保存到历史表中

    方案三:取消表的唯一约束,同时引入redis来保证唯一约束

    取消表的唯一约束,在项目中引入redis,通过redis来判重,新增时往redis set记录,删除时,删除redis记录

    方案四:变更删除标记为时间戳

    将删除状态不以0,1表示,而是以时间戳为值,然后将删除状态为与之前的唯一约束A重新组成唯一联合约束index(A、del_flag),删除时变更del_flag的时间戳

    方案五:保留删除标记,同时新建一个字段del_unique_key

    保留删除状态位,再新增一个字段del_unique_key,该字段默认值为0,字段类型和大小与主键id保持一致,同时与原先的唯一约束重新组成联合唯一约束index(A,del_unique_key),业务进行逻辑删除,变更del_unique_key的值为该删除行的主键id

    选择哪个方案?

    方案一得从业务的角度上考虑了,如果物理删除,对业务无损,那就无所谓了。

    方案二等于需要删除的记录的表都需要有历史表,如果仅仅是用来实现记录删除记录,感觉有点大材小用。

    方案三引入redis,虽然也可以解决问题,但是又额外增加复杂度,同时还得保证redis和数据库的一致性。

    方案四和方案五其实实现的思路是一样,不过如果已经是在线上跑的业务,还是推荐用第五种方案,毕竟新增字段正常对已有的业务影响相对较小,如果是第四种方案,直接将标志位修改为时间戳,可能还会涉及改业务。如果是新增业务,第四种和第五种方案比较推荐

    展开全文
  • 对于数据库有外键约束一般的情况下是: 在dos系统下(即在运行中输入cmd进入) 1、输入mysql -p root -u 回车; 2、输入密码进入; 3、进入想要删除表的数据库 即use XXXX(数据库名); 4、进入相应的数据库表 即 ...
    对于数据库有外键约束一般的情况下是:
    在dos系统下(即在运行中输入cmd进入)
    1、输入mysql -p root -u 回车;
    2、输入密码进入;
    3、进入想要删除表的数据库 即use XXXX(数据库名);
    4、进入相应的数据库表 即 show create table XXXX(表名);
    180811(已解决)关于数据库有外键约束的情况下如何删除
    5、根据外键进行删除 即 ALTER TABLE XXXX(表名) DROP FOREIGN KEY (外键名);
    =============================================================
    对于以上操作我估计对于大部分外键操作是没有问题的,我这次遇到的问题是,自己是自己的外键,通过以上方法无法删除,删除的时候会报错。那么如何操作呢?

    比较厉害的方法是
    SET @@foreign_key_checks = OFF;
    180811(已解决)关于数据库有外键约束的情况下如何删除
    通过上面操作问题解决!

    展开全文
  • 从客户发回来的日志里面看到这样的错误: ERROR util.JDBCExceptionReporter:72 - ORA-00001: unique constraint (NEWKLC.NUMBER_UNIQUE) violated 其中NEWKLC为数据库的名称,不是...请高手指教如何解决! 谢谢了!
  • 不知道大家有没有遇到这么一种业务场景,在业务中有个唯一约束A,当该业务进行逻辑删除后(设置标记为删除状态),再往唯一约束列插入相同的值时,此时会报Duplicate entry,但在业务上,该值时必须要插入的。...

    前言

    不知道大家有没有遇到这么一种业务场景,在业务中有个唯一约束A,当该业务进行逻辑删除后(设置标记为删除状态),再往唯一约束列插入相同的值时,此时会报Duplicate entry,但在业务上,该值时必须要插入的。今天我们就来聊聊处理这种业务场景的几种思路

    解决思路

    方案一:不采用逻辑删除,直接物理删除

    方案二:新建历史表

    主表进行物理删除,同时将删除的记录保存到历史表中

    方案三:取消表的唯一约束,同时引入redis来保证唯一约束

    取消表的唯一约束,在项目中引入redis,通过redis来判重,新增时往redis set记录,删除时,删除redis记录

    方案四:变更删除标记为时间戳

    将删除状态不以0,1表示,而是以时间戳为值,然后将删除状态为与之前的唯一约束A重新组成唯一联合约束index(A、del_flag),删除时变更del_flag的时间戳

    方案五:保留删除标记,同时新建一个字段del_unique_key

    保留删除状态位,再新增一个字段del_unique_key,该字段默认值为0,字段类型和大小与主键id保持一致,同时与原先的唯一约束重新组成联合唯一约束index(A,del_unique_key),业务进行逻辑删除,变更del_unique_key的值为该删除行的主键id

    方案的取舍

    方案一得从业务的角度上考虑了,如果物理删除,对业务无损,那就无所谓了。方案二等于需要删除的记录的表都需要有历史表,如果仅仅是用来实现记录删除记录,感觉有点大材小用。方案三引入redis,虽然也可以解决问题,但是又额外增加复杂度,同时还得保证redis和数据库的一致性。方案四和方案五其实实现的思路是一样,不过如果已经是在线上跑的业务,还是推荐用第五种方案,毕竟新增字段正常对已有的业务影响相对较小,如果是第四种方案,直接将标志位修改为时间戳,可能还会涉及改业务。如果是新增业务,第四种和第五种方案比较推荐

    展开全文
  • 如何删除主键、唯一和外键约束? 文章目录如何删除主键、唯一和外键约束?删除约束1. 删除主键约束:2. 删除唯一约束:3. 删除外键约束: 删除约束 约束的 index_name 可通过 下面语句进行查询: SHOW INDEX FROM ...
  • Oracle数据库中的约束有五种约束,分别是: 实体完整性:主键约束、唯一性约束(可以为空) ...创建、删除约束的SQL语句: 表名是test 1、添加主键约束(非空,不重复)(给test表的id这一列添加主键约束) alter
  • 主键约束(两个特性) 1:主键必须写 2:主键不可重复 create table stu01( sid varchar(100), sname varchar2(100) ... alter table stu01 drop constraint PK_stu01_sid ---删除主键约束 唯一
  • 我正在改变我的数据库中的约束,我需要删除其中的一些.我知道,对于单个约束,命令如下:ALTER TABLE tblApplication DROP CONSTRAINT constraint1_name;但是,当我尝试ALTER TABLE tblApplication DROP (CONSTRAINT ...
  • mysql 教你如何最简单删除数据库中所有的表不带外键约束的表查询运行 SQL带有外键约束的表查询运行 SQL 不带外键约束的表 查询 SELECT concat('DROP TABLE IF EXISTS ', table_name, ';') FROM information_schema....
  • 如何删除表的外键约束

    千次阅读 2020-08-02 14:43:16
    为了确保数据库的正确性,我们必须先解除两个表之间的关联关系,那就是删除外键约束啦!让我们先来看看删除外键约束的语法规则。 语法规则为: ALTER TABLE 表名 DROP FOREIGN KEY 外键约束名; 。 举个例子: 我们...
  • SQLServer数据库的基础知识的回顾  1)主数据文件:*.mdf 2)次要数据文件:*.ndf ... 如何查看SQL Server的帮助==================快捷键F1 一、创建数据库 1.语法 1 create database 数据库名 ...
  • 数据库表没有主键,没有唯一性约束如何删除重复记录呢?求大神解答。
  • MySQL 如何删除有外键约束的表数据

    千次阅读 2019-05-18 17:32:24
    MySQL 如何删除有外键约束的表数据 今天删除数据库中数据,提示因为设置了foreign key,无法修改删除 可以通过设置FOREIGN_KEY_CHECKS变量来避免这种情况。 SET FOREIGN_KEY_CHECKS=0; 删除,更新数据, 恢复外键 SET...
  • 如何添加主键、唯一、外键和默认约束?... 添加/删除默认约束 DEFAULT 1. 添加主键约束 CONSTRAINT_PK主键名字为PK ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_...
  • 目录 一、数据库对象 ...5、约束创建及删除 6、表空间创建及扩展 7、表空间相关操作 一、建立表空间 二、建立UNDO表空间 三、建立临时表空间 四、改变表空间状态 五、删除表空间 六、扩展表空间 ...
  • 数据库删除某一列

    万次阅读 2013-10-26 20:48:22
    1、在sqlserver中如何删除某字段: 1) 当字段没有默认值或者约束的时候可以使用: alter table [table_name] drop column [column_name] 来删除。 2)当有默认值的时候应该先删除默认值,然后再删除此列,不然...
  • 数据库中查看外键是否有效,值为1表示外键有效 mysql> select @@foreign_key_checks; +----------------------+ | @@foreign_key_checks | +----------------------+ | 1 | +----------------------+ 1 row in ...
  • sql 删除约束

    2015-01-19 00:01:00
    在SQL数据库中,如果需要删除约束,应该如何操作呢?下面就将为您介绍删除SQL表约束的方法,供您参考,希望对您有所帮助。 1)禁止所有表约束的SQLselect 'alter table '+name+' nocheck constraint all' from ...
  • sqlserver删除约束和动态约束

    千次阅读 2017-09-04 09:51:26
    在SQL数据库中,如果需要删除约束,应该如何操作呢?下面就将为您介绍删除SQL表约束的方法,供您参考,希望对您有所帮助。 1)禁止所有表约束的SQL select 'alter table '+name+' nocheck constraint all' from ...
  • 外键约束。 当A表中的记录删除了,查询时B表需要A表中的记录。如何使得查询记录简单一点。
  • 问题:两张表互为外键约束删除任何一张表都会出错 解决方法:临时关闭检查  语法:set @@foreign_key_checks=OFF;  OK,然后就可以推倒你亲手种的果了,各种姿势drop ps:数据库设计宁可多花点儿时间,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 410
精华内容 164
关键字:

数据库如何删除约束