精华内容
下载资源
问答
  • SQLServer之修改CHECK约束 原文:SQLServer之修改CHECK约束使用SSMS数据库管理工具修改CHECK约束 1、打开数据库,选择数据表-》右键点击-》选择设计(或者展开约束,选择约束,右键点击,选择修改,...
    原文:SQLServer之修改CHECK约束

    使用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:修改约束的表设计器使用规则时,可能会引起原有数据与约束的冲突。

     

    posted on 2018-09-10 16:28 NET未来之路 阅读(...) 评论(...) 编辑 收藏

    转载于:https://www.cnblogs.com/lonelyxmas/p/9620626.html

    展开全文
  • Oracle修改check约束的sql语句

    千次阅读 2019-02-27 14:46:45
    开始想修改这张表的其中一个字段的约束 check约束,百度各种说不能修改check约束??只能删掉了约束,再重新修改约束。经过各种测试得出,oracle是可以修改check约束,但是也是必须需要删掉原来的约束(我天真的以为...

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

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

    desc 表名字;

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

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

    --查询约束关系
    select * from user_constraints where table_name='ES_SUNING_AUTO_TASK';

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

     

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

    --更改约束关系
    alter table 表名字 modify STAT_CDE VARCHAR2(1)  check(STAT_CDE in('S', 'P', 'A', 'E','I'));

    修改执行结果:

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

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

    执行插入语句,会报错:

    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;

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

    最后成功解决

    展开全文
  • 开始想修改这张表的其中一个字段的约束 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

    展开全文
  • 问题3 : 某列已存在check约束,怎么修改check约束(在不删除表和原有check约束的基础上)?? 我尝试用: alter table t modify constraint ck_t check(id ......, 始终没能成功, 可不可以用modify 这种形式...
  • 用alter table语句: 完整用法: ALTER [IGNORE] TABLE tbl_name alter_... 你可以通过查看该表的 创建语句来 查看 约束: SHOW CREATE TABLE mytablename; 得到ddl语句; 参考资料:http://arpoon.info/zh

    用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约束

    2018-10-21 01:35:00
    CHECK约束会检查输入到记录中的值是否满足一个条件,如果不满足这个条件则对数据库做的修改不会成功。比如,一个人的年龄是不可能为负数的,一个人的入学日期不可能早于出生日期,出厂月份不可能大于12。可以在CHECK...
  • 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...
  • 求一个Check约束修改

    2014-12-12 23:36:20
    需求是,我需要建立一个约束,DorID和SName是两列,表Student和表MailRecord都有的同名列,要将两个表的这两个列建立约束关系。 现在提示不能在这里使用子查询,且由于Student表中DorID和SName不是主键,所以无法...
  • 用alter table语句: 完整用法: ALTER [IGNORE] TABLE tbl_name alter_specification [, alter_specification] ... alter_specification: table_option ... | ADD [COLUMN] column_... ◆◆ 修改失败,请稍后尝试
  • CHECK约束会: 检查输入到记录中的值是否满足一个条件,如果不满足这个条件则对数据库做的修改不会成功。 如,一个人的年龄是不可能为负数的,一个人的入学日期不可能早于出生日期,出厂月份不可能大于12。可以在...
  • sql sever2012学习4 check约束

    千次阅读 2016-06-04 10:39:41
    CHECK 约束(CHECK 约束:定义列中可接受的数据值。可以将 CHECK 约束应用于多个列,也可以将多个 CHECK 约束应用于单个列。当除去某个表时,也将除去 CHECK 约束。)指定可由表中一列或多列接受的数据值或格式。例如,...
  • 数据库 删除check约束

    千次阅读 2019-04-04 15:12:12
    (6) 根据借阅表修改每个读者的借书数量。 */ alter table Reader drop constraint CK__Reader__borrowCo__1DE57479 update Reader set borrowCount=alterNum from Reader a,( select readerNo,count(readerNo) ...
  • /*非工作时间不得修改数据*/ create table lecky ( lid int primary key identity(1000,1), lname varchar(20), ldate datetime default getdate() --默认值为当前时间 ) alter table lecky add constraint ck...
  • 目录 ...检查约束(/CHECK KEY/CK)  外键约束(FOREIGN KEY/FK)  修改约束 查询约束名称 直接上图!!! 一、修改表结构 基础 检查表结构 DESC 表名; 准备: 首先创建一个用于演示的表 增加测
  • mysql里当表建立完成后怎么为其中某一列加入check约束?使用Alter table 表名 modify 列名 数据类型 check (...);报错,另外为什么我修改时不能用Alter table 列名 alter column 列名 数据类型 来修改,这样也会报错...
  • DDL语言就是我们所说的数据库模式定义语言,用于对数据库或者数据表的创建定义、修改和删除,下面就从大方面去学习DDL:一、库的管理1、创建库:create database 【if not exists】库名 【character set 字符集名】2...
  • 在某张表 x_table 中有个字段 x_field 现在需要对x_field 加一个check约束,条件是,这个字段可以为空,但是当这个字段有值时(即某条记录该值不为空时),一定要保证这个值是唯一的? 例如: 可以存在如下情况 x_...
  • 建表并修改约束

    2011-07-26 19:04:31
    主键约束 primary key not null check unique 唯一约束 create table student( --学生表 xh number(4) con
  • 文章目录1、检查约束(check、ck)1.1 范例1:设置检查约束1.2 范例2:保存正确的数据1.3 范例3:保存错误的数据2、外键约束(foreign key、fk)2.1 范例1:初期设计 --不使用外键2.2 范例2:增加正确数据2.3 范例3:...
  • 1. check 约束: (1) 建表时: create table tb1( gender char(2) check(gender =''男 or ...添加check约束: alter table tb1 add constraint ch_gender check( gender = '男' or gender= '女' ) //修改c

空空如也

空空如也

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

修改check约束