您的位置:68399皇家赌场 > 虚拟主机 > SQLServer之FOREIGN KEY约束

SQLServer之FOREIGN KEY约束

发布时间:2019-07-14 18:14编辑:虚拟主机浏览(129)

    行使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

    澳门皇家赌场55533网址 1

    澳门皇家赌场55533网址 2

    应用T-SQL脚本增多CHECK约束

    选用SSMS数据库管理工科具增加DEFAULT约束

    1、连接数据库,选拔数据表-》右键点击-》选用设计。

    澳门皇家赌场55533网址 3

    2、在表设计窗口中-》接纳数据列-》在列属性窗口中找到暗中同意值或绑定-》输入默许值(注意私下认可值的数据类型和输入格式)。

    澳门皇家赌场55533网址 4

    3、点击保存按键(也许ctrl s)-》刷新表-》再度张开表查看结果。

    澳门皇家赌场55533网址 5

    当表结构已存在时

    假定要增加约束的表已存在外键约束,须要先删除了那么些之外键约束再加多外键约束。假诺海市蜃楼外键约束可以增添外键约束。

    语法:

    if exists(select * from sysobjects where name=约束名)
    alter table 数据库名.[dbo].表名 drop constraint 约束名;
    alter table 数据库名.[dbo].表名 with check add constraint 约束名 foreign key(列名)
    references 数据库名.[dbo].表名(列名)

    on delete cascade
    on update cascade;
    go

    示例:

    if exists(select * from sysobjects where name='t1_t2')
    alter table [testss].[dbo].[test1] drop constraint t1_t2;
    alter table [testss].[dbo].[test1] with check add constraint t1_t2 foreign key(classid)
    references [testss].[dbo].[test2](id)
    on delete cascade
    on update cascade;
    go

    澳门皇家赌场55533网址 6

    选用SSMS数据库管理工科具修改CHECK约束

    1、打开数据库,选用数据表-》右键点击-》接纳设计(恐怕举办约束,选拔约束,右键点击,选择修改,后边步骤同样)。

    澳门皇家赌场55533网址 7

    澳门皇家赌场55533网址 8

    2、选用要修改的数额列-》右键点击-》选取CHECK约束。

    澳门皇家赌场55533网址 9

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

    澳门皇家赌场55533网址 10

     4、点击保存开关(也许ctrl s)-》刷新表查看修改结果。

    澳门皇家赌场55533网址 11

    CHECK约束增添准绳

    1、CHECK 约束用于限制列中的值的界定。

    2、Check约束通过逻辑表明式来剖断数据的行之有效,用来界定输入一列或多列的值的限制,在列中更新数据时,所要输入的从头到尾的经过必须餍足Check约束的原则,不然将不恐怕正确输入。

    3、若是对单个列定义 CHECK 约束,那么该列只允许特定的值。

    4、假如对贰个表定义 CHECK 约束,那么此约束会在特定的列中对值实行限制。

    创办表时增多默许约束

    第一剖断表是还是不是选在,假诺存在则先删除表再增加,假若不设有则一向抬高。

    语法:

    --创设新表时增添暗中同意约束
    --数据库注明
    use 数据库名
    go
    --即使表已存在则先删除表再次创下设,如若表荒诞不经则向来开立
    if exists(select * from sysobjects where name=表名 and type ='U')
    drop table 表名;
    go
    --建表语法评释
    create table 表名
    (
    --字段表明
    列名 列类型 identity(1,1) not null,
    列名 列类型) null,
    列名 列类型 null,
    列名 列类型 null,
    列名 列类型,
    列名 列类型 constraint 约束名 default 默认值,
    primary key clustered(列名 asc) with(ignore_dup_key=off) on [primary] --主键索引证明
    )on [primary]

    --字段注释注解
    exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'列说明' , @level0type=N'SCHEMA',
    @level0name=N'dbo', @level1type=N'TABLE',@level1name=N'表名', @level2type=N'COLUMN',@level2name=N'列名';

    exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'列说明' , @level0type=N'SCHEMA',
    @level0name=N'dbo', @level1type=N'TABLE',@level1name=N'表名', @level2type=N'COLUMN',@level2name=N'列名';

    exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'列说明' , @level0type=N'SCHEMA',
    @level0name=N'dbo', @level1type=N'TABLE',@level1name=N'表名', @level2type=N'COLUMN',@level2name=N'列名';

    exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'列说明' , @level0type=N'SCHEMA',
    @level0name=N'dbo', @level1type=N'TABLE',@level1name=N'表名', @level2type=N'COLUMN',@level2name=N'列名';

    exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'列说明' , @level0type=N'SCHEMA',
    @level0name=N'dbo', @level1type=N'TABLE',@level1name=N'表名', @level2type=N'COLUMN',@level2name=N'列名';

    go

    示例:

    --创造新表时增加私下认可约束
    --数据库表明
    use testss
    go
    澳门皇家赌场55533网址,--假使表已存在则先删除表再次创下造,如若表不设有则一贯开立
    if exists(select * from sysobjects where name='test1' and type ='U')
    drop table test1;
    go
    --建表语法注明
    create table test1
    (
    --字段证明
    id int identity(1,1) not null,
    name nvarchar(50) null,
    sex nvarchar(50) null,
    age nvarchar(50) null,
    classid int,
    height int constraint default_he default 166,
    primary key clustered(id asc) with(ignore_dup_key=off) on [primary] --主键索引表明
    )on [primary]

    --字段注释证明
    exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'id主键' , @level0type=N'SCHEMA',
    @level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'id';

    exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'姓名' , @level0type=N'SCHEMA',
    @level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'name';

    exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'性别' , @level0type=N'SCHEMA',
    @level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'sex';

    exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'年龄' , @level0type=N'SCHEMA',
    @level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'age';

    exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'班级id' , @level0type=N'SCHEMA',
    @level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'classid';

    go

    澳门皇家赌场55533网址 12

    澳门皇家赌场55533网址 13

    采取SSMS数据库管理工科具加多外键约束

    本示例演示当表结构已存在时增添外键约束,成立表时丰盛外键约束步骤和表结构存在时增多外键步骤同样。示例演示如下:

    1、连接数据库,打开要加多外键的数据表-》右键点击-》选取设计。

    澳门皇家赌场55533网址 14

    2、在表设计窗口-》选拔要增添外键的数额行-》右键点击-》选用涉及。

    澳门皇家赌场55533网址 15

    3、在外键关系窗口中-》点击增加。

    澳门皇家赌场55533网址 16

    4、增加实现后-》首先修改表和列规范。

    澳门皇家赌场55533网址 17

    5、在表和列窗口中-》输入外键名-》在左边选拔主表和涉及的列-》在侧边选取从表和当作外键的列-》点击显著。

    澳门皇家赌场55533网址 18

    6、在外键关系窗口中-》可挑选丰硕也许不增多外键描述-》可选拔丰硕可能不增添修改只怕去除数据时级联操作-》可挑选充裕大概不添抓牢制外键约束-》可选取丰裕或许不添坚实制用于复制-》点击关闭。

    澳门皇家赌场55533网址 19

    7、点击保存按键(ctrl s)-》此时表会弹出警告窗口,点击是-》刷新查看外键是不是丰硕成功。

    澳门皇家赌场55533网址 20

    澳门皇家赌场55533网址 21

    本文由68399皇家赌场发布于虚拟主机,转载请注明出处:SQLServer之FOREIGN KEY约束

    关键词: 68399皇家赌场

上一篇:SQLServer之DEFAULT约束

下一篇:没有了