精华内容
下载资源
问答
  • 如何修改或删除mysql CHECK约束 constraint?
    2021-01-19 08:48:21

    用alter table语句:

    完整用法:

    ALTER [IGNORE] TABLE tbl_name

    alter_specification [, alter_specification] ...

    alter_specification:

    table_option ...

    | ADD [COLUMN] column_definition [FIRST | AFTER col_name ]

    | ADD [COLUMN] (column_definition,...)

    | ADD {INDEX|KEY} [index_name] [index_type] (index_col_name,...)

    | ADD [CONSTRAINT [symbol]]

    PRIMARY KEY [index_type] (index_col_name,...)

    | ADD [CONSTRAINT [symbol]]

    UNIQUE [INDEX|KEY] [index_name] [index_type] (index_col_name,...)

    | ADD [FULLTEXT|SPATIAL] [INDEX|KEY] [index_name] (index_col_name,...)

    | ADD [CONSTRAINT [symbol]]

    FOREIGN KEY [index_name] (index_col_name,...)

    [reference_definition]

    | ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}

    | CHANGE [COLUMN] old_col_name column_definition

    [FIRST|AFTER col_name]

    | MODIFY [COLUMN] column_definition [FIRST | AFTER col_name]

    | DROP [COLUMN] col_name

    | DROP PRIMARY KEY

    | DROP {INDEX|KEY} index_name

    | DROP FOREIGN KEY fk_symbol

    | DISABLE KEYS

    | ENABLE KEYS

    | RENAME [TO] new_tbl_name

    | ORDER BY col_name [, col_name] ...

    | CONVERT TO CHARACTER SET charset_name [COLLATE collation_name]

    | [DEFAULT] CHARACTER SET charset_name [COLLATE collation_name]

    | DISCARD TABLESPACE

    | IMPORT TABLESPACE

    index_col_name:

    col_name [(length)] [ASC | DESC]

    index_type:

    USING {BTREE | HASH}

    删除 主键 和外键约束:

    ALTER TABLE mytablename

    DROP PRIMARY KEY

    DROP FOREIGN KEY fk_symbol;

    还有就是怎么样查询 约束;

    你可以通过查看该表的 创建语句来 查看 约束:

    SHOW CREATE TABLE mytablename;

    得到ddl语句;

    参考资料:http://arpoon.info/zh

    更多相关内容
  • 开始想修改这张表的其中一个字段的约束 check约束,百度各种说不能修改check约束??只能删掉了约束,再重新修改约束。经过各种测试得出,oracle是可以修改check约束,但是也是必须需要删掉原来的约束(我天真的以为...

    开始想修改这张表的其中一个字段的约束 check约束,百度各种说不能修改check约束??只能删掉了约束,再重新修改约束。经过各种测试得出,oracle是可以修改check约束,但是也是必须需要删掉原来的约束(我天真的以为,修改会自动删掉,是不会的!),才能插入数据成功!!!!上代码。

    (1)首先使用desc 表名字查看表结构。

    desc 表名字;

    也就是修改该表名字中的stat_cde,原本类型是 not null varcher2(1) ,累似于性别的标记。需要填写指定的字符。

    218b4a71ab8a2885c28deeb6368d802a.png

    (2)再看表约束,sql如下:

    --查询约束关系

    select * from user_constraints where table_name='ES_SUNING_AUTO_TASK';

    查询结果如下,查询出来 stat_cde 是SPAE字符。现在需要修改成SPAEI。

    275124077a4f44d34fd9865ddc7aedc0.png

    (3)正确的修改 check的语句:(stat_cde是字段名字)

    --更改约束关系

    alter table 表名字 modify STAT_CDE VARCHAR2(1) check(STAT_CDE in('S', 'P', 'A', 'E','I'));

    修改执行结果:

    5358470cebfe0b78d7d8fa2431df6475.png

    (4)再次查询结果,是多了一条约束记录,之前的约束是还在的。

    当你再次选择插入的时候,还是会报错。因为原来既有SPAE约束,也有你新加入的SPAEI 判断约束,两条都执行。因此会报错。

    1d8a0ba45f69ee64700cca051cfd0223.png

    执行插入语句,会报错:

    insert into 表名字 (ID,ORDER_CODE,ORDER_KEY,STAT_CDE,MSG,creat_dte) values (SQ_ES_SUNING_AUTO_TASK_ID.nextval,'123',null,'I',null,sysdate);

    报错结果

    在行: 514 上开始执行命令时出错 -

    insert into 你的表名字 (ID,ORDER_CODE,ORDER_KEY,STAT_CDE,MSG,creat_dte) values (SQ_ES_SUNING_AUTO_TASK_ID.nextval,'123',null,'I',null,sysdate)

    错误报告 -

    ORA-02290: check constraint (SYS_ES.SYS_C00114563) violated

    (5)因此,是还需要删除你原来的约束的!并且先查找除你的contanatnt_name,后删除提交。

    你的contraint name,不需要加单引号,直接复制。

    --先查询一次你的contraint name

    select * from user_constraints where table_name='大写表名字';

    --删除约束 , SYS_C00114563 是你的contraint name,并且,不需要加单引号,直接复制

    alter table 表名字 drop constraint SYS_C00114563;

    56b16e08e1c91aac5e3216438f470b23.png

    (6)删除约束成功后,重新插入,即可插入成功。修改check约束完毕

    75e90740e2dec3ac0a046dfea8493676.png

    最后成功解决

    标签:name,约束,修改,报错,sql,Oracle,null,check

    来源: https://blog.csdn.net/qq_36411874/article/details/87971883

    展开全文
  • SQLServer之修改CHECK约束 原创小子pk了 最后发布于2018-09-05 15:20:34 阅读数 2767 收藏 展开 使用SSMS数据库管理工具修改CHECK约束 1、打开数据库,选择数据表-》右键点击-》选择设计(或者展开约束,选择约束,...

    SQLServer之修改CHECK约束
    原创小子pk了 最后发布于2018-09-05 15:20:34 阅读数 2767  收藏
    展开
    使用SSMS数据库管理工具修改CHECK约束
    1、打开数据库,选择数据表-》右键点击-》选择设计(或者展开约束,选择约束,右键点击,选择修改,后面步骤相同)。

    2、选择要修改的数据列-》右键点击-》选择CHECK约束。

    3、在CHECK约束弹出框中-》选择要修改的约束-》输入约束表达式-》输入约束名和约束描述-》选择表设计器规则-》点击关闭。

     4、点击保存按钮(或者ctrl+s)-》刷新表查看修改结果。

    使用T-SQL脚本修改CHECK约束
    CHECK约束修改规则必须首先删除现有的CHECK约束,然后使用新定义重新创建,才能使用Transact-SQL修改CHECK约束。

    语法:

    --修改check约束
    use 数据库名
    go

    --如果约束存在则先删除
    if exists(select * from sysobjects where name=约束名)
    alter table 表名 drop constraint 约束名;
    go

    --添加约束
    alter table 表名
    --with check --该约束是否应用于现有数据,with check表示应用于现有数据,with nocheck表示不应用于现有数据
    add constraint 约束名
    check 
    not for replication --当复制代理在表中插入或更新数据时,禁用该约束。
    (约束表达式);
    go

    --向表中添加新数据或更新表中现有数据时是否禁用该约束。check表示校验,nocheck表示不校验
    --alter table 表名
    --check
    --constraint 表名;
    --go

    --添加check约束描述
    execute sp_addextendedproperty N'MS_Description', N'约束描述', N'SCHEMA', N'dbo', N'TABLE', N'表名', N'CONSTRAINT', N'约束名';
    go

    示例:

    --修改check约束
    use testss
    go

    --如果约束存在则先删除
    if exists(select * from sysobjects where name='u_check2')
    alter table test1 drop constraint u_check2;
    go

    --添加约束
    alter table test1
    --with check --该约束是否应用于现有数据,with check表示应用于现有数据,with nocheck表示不应用于现有数据
    add constraint u_check2 
    check 
    not for replication --当复制代理在表中插入或更新数据时,禁用该约束。
    (height>=100 and height <=200);
    go

    --向表中添加新数据或更新表中现有数据时是否禁用该约束。check表示校验,nocheck表示不校验
    --alter table test1
    --check
    --constraint u_check2;
    --go

    --添加check约束描述
    execute sp_addextendedproperty N'MS_Description', N'修改约束', N'SCHEMA', N'dbo', N'TABLE', N'test1', N'CONSTRAINT', N'u_check2';
    go

    CHECK约束修改优缺点
    优点:

    1、修改数据库CHECK约束可以保证数据的规范性和完整性。

    缺点:

    1:修改约束的表设计器使用规则时,可能会引起原有数据与约束的冲突。
    ————————————————
    版权声明:本文为CSDN博主「小子pk了」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_24188927/article/details/82424497

    展开全文
  • mysql 的 check约束

    2021-03-16 16:21:04
    mysql的check约束在当前mysql版本中依然是个摆设(mysql版本5.7.9)那么要怎么取现救国,实现类似check约束的功能呢?解决方案:1.使用触发器,来完成类似check的约束验证2.使用set或enum方式来完成字符串的值范围check...

    mysql的check约束在当前mysql版本中依然是个摆设(mysql版本5.7.9)

    那么要怎么取现救国,实现类似check约束的功能呢?

    解决方案:

    1.使用触发器,来完成类似check的约束验证

    2.使用set或enum方式来完成字符串的值范围check约束

    //1.set的效果

    mysql> create table test(

    -> id bigint primary key auto_increment,

    -> paymethod set('货到付款','支付宝付款')

    -> );

    Query OK, 0 rows affected (0.02 sec)

    mysql> insert into test(paymethod) values('货到付款');

    Query OK, 1 row affected (0.00 sec)

    mysql> insert into test(paymethod) values('货到付');

    ERROR 1265 (01000): Data truncated for column 'paymethod' at row 1

    在java程序中可以读取相关信息:

    package com.xie.test;

    import java.sql.Connection;

    import java.sql.DriverManager;

    import java.sql.PreparedStatement;

    import java.sql.ResultSet;

    import java.sql.SQLException;

    public class Test {

    public static void main(String[] args){

    try {

    Class.forName("com.mysql.jdbc.Driver");

    Connection ct=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/shop","root","centre");

    PreparedStatement ps=ct.prepareStatement("select * from test");

    ResultSet rs=ps.executeQuery();

    while (rs.next()) {

    System.out.println(rs.getLong(1));

    System.out.println(rs.getString(2));

    }

    } catch (ClassNotFoundException e) {

    e.printStackTrace();

    } catch (SQLException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    }

    }运行结果:

    1

    货到付款

    //2.enum的效果:

    mysql> create table test(

    -> id bigint primary key auto_increment,

    -> paymethod enum('货到付款','支付宝付款')

    -> );

    Query OK, 0 rows affected (0.00 sec)

    mysql> insert into test(paymethod) values('货到付款');

    Query OK, 1 row affected (0.00 sec)

    mysql> insert into test(paymethod) values('货到付');

    ERROR 1265 (01000): Data truncated for column 'paymethod' at row 1

    测试java代码如上:

    测试结果:

    1 货到付款

    展开全文
  • MySQL怎么使用check约束

    2021-01-18 20:02:52
    MySQL使用check约束的方法:1、如果要设置CHECK约束的字段范围小,并且比较容易列举全部的值,可以将该字段的类型设置为enum类型或set类型。2、如果需要设置CHECK约束的字段范围大,且列举全部值比较困难,使用...
  • CHECK约束(示例代码)

    千次阅读 2021-01-21 04:20:38
    CHECK约束会检查输入到记录中的值是否满足一个条件,如果不满足这个条件则对数据库做的修改不会成功。比如,一个人的年龄是不可能为负数的,一个人的入学日期不可能早于出生日期,出厂月份不可能大于12。可以在CHECK...
  • 现在要说的是在列这一层次过滤的基于表定义之前就规范好的 CHECK 约束。(MySQL 版本 >= 8.0.16)mysql> create table f1 (r1 int constraint tb_f1_r1_chk1 check (mod(r1,3)=0));Query OK, 0 rows affected ...
  • MySQL检查约束CHECK

    千次阅读 2021-01-18 20:02:55
    MySQL 检查约束(CHECK)是用来检查数据表中字段值有效性的一种手段,可以通过 CREATE TABLE 或 ALTER TABLE 语句实现。设置检查约束时要根据实际情况进行设置,这样能够减少无效数据的输入。在《MySQL默认值》和...
  • check约束的增删操作 以MySQL为例: 添加语法: alter table table_name add constraint check_name check(约束条件); 删除语法: alter table student drop check check_name; 以上两条语句可对于已经建成的表...
  • MySQL8.0添加和删除check约束

    千次阅读 多人点赞 2019-11-07 19:09:48
    在MySQL8.0中,添加了对check约束的操作,我使用的MySQL版本是8.0.17.0,下面我使用navicat for MySQL来演示。 check约束作用效果 使用show create table来查看创建表的语句 | testtable | CREATE TABLE `testtable`...
  • 第04期:列 CHECK 约束

    千次阅读 2020-05-13 16:42:20
    check 约束意思,就是对一列或者多列按照一定的预先设置好的规则进行过滤,条件为真,则过滤成功;条件为假,则过滤失败,返回失败代码给客户端。 为什么要把这个单独列出来写呢,经常遇到不规范的 SQL,很多时候...
  • SQL server 中设置CHECK约束

    万次阅读 多人点赞 2019-03-23 17:34:28
    在表内对想设置CHECK约束的属性右击, 在弹出的选项卡中选择CHECK约束 4、在检查约束的窗口中 点击添加 在右侧的界面进行约束设置 写入约束表达式 关于约束表达式的3个例子: 1....
  • 对于mysql的认识和使用例子,以及check约束的实例案例
  • create table f1 (r1 int constraint tb_f1_r1_chk1 check (mod(r1,3)=0));Query OK, 0 rows affected (0.03 sec)mysql> create table f2 (r1 int constraint tb_f2_r1_chk1 check (mod(r1,3)=0) not e...
  • SQL CHECK 约束

    2022-03-29 14:29:19
    SQL CHECK 约束 CHECK 约束用于限制列中的值得范围。 如果对单个定于的CHECK 约束,那么该列只允许特定的值。 如果对一个表定于CHECK 约束,那么此约束会基于行中其他列的值在特定的列中对值进行限制。 CREATE TABLE...
  • Oracle之Check约束实例详解

    万次阅读 2014-11-10 21:07:28
    实例讲解在Oracle中如何使用CHECK约束(创建、启用、禁用和删除)
  • MYSQL 目前版本貌似不支持 SQL标准的 检查约束(check);SQL如:ALTER TABLE emp ADD CONSTRAINT ck_emp_sex CHECK(sex ='男' OR sex='女');CHECK子句会被分析,但是会被忽略。请参见13.1.5节,“CREATETABLE语法”...
  • SQL学习之check约束

    千次阅读 2019-12-12 21:59:36
    目录参考源SQL check 约束示例数据create table 添加 check 约束多个字段添加约束check 约束命名alter table 时的 SQL check 约束删除 check 约束SQL Server / Oracle / MS AccessMySQL建议 参考源 简单教程 ...
  • SQL研习录(24)——CHECK约束版权声明一、CHECK约束1、基本语法 版权声明 本文原创作者:清风不渡 博客地址:https://blog.csdn.net/WXKKang 一、CHECK约束   在数据库中,CHECK 约束是指约束表中某一个或者...
  • CHECK约束

    千次阅读 2018-10-21 01:35:00
    CHECK约束会检查输入到记录中的值是否满足一个条件,如果不满足这个条件则对数据库做的修改不会成功。比如,一个人的年龄是不可能为负数的,一个人的入学日期不可能早于出生日期,出厂月份不可能大于12。可以在CHECK...
  • create table f1 (r1 int constraint tb_f1_r1_chk1 check (mod(r1,3)=0));Query OK, 0 rows affected (0.03 sec)mysql> create table f2 (r1 int constraint tb_f2_r1_chk1 check (mod(r1,3)=0) not e...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 58,968
精华内容 23,587
关键字:

修改check约束