建表时和建表后的级联更新和删除

--对表建立级联更新或级联删除方法
--1.在建表时直接定义级联更新和级联删除
create table pktable
(ID int
primary key,
SCD int,
SName varchar(20))

create table fktable
(ID int primary key,
SCD int references
pktable(ID) on delete cascade on update cascade,
Age tinyint)

insert into pktable values(‘1001‘,‘125‘,‘杨贤亮‘)
insert into pktable
values(‘1002‘,‘126‘,‘杨梓民‘)
insert into pktable
values(‘1003‘,‘127‘,‘张成锤子‘)

insert into fktable values(‘0001‘,‘1001‘,‘20‘)
insert into fktable
values(‘0002‘,‘1002‘,‘20‘)
insert into fktable values(‘0003‘,‘1003‘,‘20‘)

delete from pktable where ID=1003

--2.在建立表结束后在对表赋予级联更新和级联删除属性
create table pktable
(ID int primary
key,
SCD int,
SName varchar(20))

create table fktable
(ID int primary key,
SCD int references
pktable(ID),
Age tinyint)

exec sp_helpconstraint ‘fktable‘ --查看fktable表的所有信息,包括约束,类型,等等

alter table fktable --选择表fktable

--这是我的建标时外键的约束,小伙伴们看可以根据sp_helpconstraint语句来查询自己想要的约束名字
drop constraint
FK__fktable__SCD__1CF15040 --删除名字为 FK__fktable__SCD__1CF15040 的约束

alter table fktable
drop constraint fk_ygid_xsygid

alter table fktable
add constraint fk_ygid_xsygid
--为接下来要定义的约束起一个名字
foreign key(SCD) references pktable(ID)
on update
cascade
on delete cascade

insert into pktable values(‘1001‘,‘125‘,‘杨贤亮‘)
insert into pktable
values(‘1002‘,‘126‘,‘杨梓民‘)
insert into pktable
values(‘1003‘,‘127‘,‘张成锤子‘)

insert into fktable values(‘0001‘,‘1001‘,‘20‘)
insert into fktable
values(‘0002‘,‘1002‘,‘20‘)
insert into fktable values(‘0003‘,‘1003‘,‘20‘)

delete from pktable where ID=1003

select * from pktable
select * from fktable

时间: 2024-10-10 01:08:42

建表时和建表后的级联更新和删除的相关文章

Oracle设置创建表时的默认表空间

在导入/创建Oracle数据库表,有时我们会检查发现,导入/创建后表,所创建的表空间并非是我们想要的默认表空间.此时我们需要先修改用户的默认表空间,再导入的方式来解决该问题. alter user 你的用户名 default tablespace 你想默认的表空间 例如:alter user platform default tablespace platform 执行生效后,此时,再导入脚本或者创建表,就会在指定的默认空间下了

postgreSQL 创建user表时引发的表名大写与双引号问题

在postgreSQL里面,user是一个保留字. 如果你想创建user表,你可能会遭遇一些问题! 如图: 可以看到,这里是无法创建user表的. 你可能会说,我只是没有加双引号""来括住大写的表名而已,没错! 当我用""括住大写的表名的时候,问题解决了! 如图: 但是,事情还没完! 如果我不是创建user表,而是其他的,如Useless表呢? 如图: 会看到Useless表是可以创建的,只不过这里表名被自动转换为了小写. 这里应该是遵循了标准SQL的规定. 如果我

解决MySQL联表时出现字符集不一样

mysql 建表时都会设置表的字符集和排序规则,通常是 utf8,不过我这边习惯建表的字符集是 utf8mb4,排序规则是 utf8mb4_unicode_ci.有些 utf8mb4 的表默认排序规则是 utf8mb4_general_ci,导致在联表操作时会报错误: Illegal mix of collations 其实这个就是联表时由于表的排序规则不一致才会引起的,这个可以通过将表的排序规则改成一致来解决. 但是有时表已经在线上了,无法修改,而现在又要急着用,可以通过下面的方法: UPDA

Django解决扩展用户表时,后台Admin显示密码为明文的问题

小生博客:http://xsboke.blog.51cto.com 如果有疑问,请点击此处,然后发表评论交流,作者会及时回复(也可以直接在当前文章评论). -------谢谢您的参考,如有疑问,欢迎交流 Django解决当扩展用户表时,用户继承AbstractUser后,后台Admin会显示密码为明文的问题 先看项目列表 1.今天在写一个扩展Django默认的用户表功能时,遇到了一个问题.先给大家看一下我写的,扩展用户表的models[apps.users.models],我是通过继承Abstr

Mysql 建表时,日期时间类型选择

mysql(5.5)所支持的日期时间类型有:DATETIME. TIMESTAMP.DATE.TIME.YEAR. 几种类型比较如下: 日期时间类型 占用空间 日期格式 最小值 最大值 零值表示  DATETIME  8 bytes  YYYY-MM-DD HH:MM:SS  1000-01-01 00:00:00 9999-12-31 23:59:59 0000-00-00 00:00:00  TIMESTAMP  4 bytes  YYYY-MM-DD HH:MM:SS  197001010

MySQL建表时列名同保留字重复问题解决办法

建表时遇到遇到属性名同MySQL的保留字相同导致不能建表的问题,如下SQL语句: CREATE TABLE TBL_ACCOUNT_FROZEN_RECORD ( ID BIGINT NOT NULL AUTO_INCREMENT, TRADE_FLOW_ID VARCHAR(60) NOT NULL, ACCOUNT_NO VARCHAR(32) NOT NULL, INITIATOR VARCHAR(16) NOT NULL, OPERATE_TYPE VARCHAR(32) NOT NUL

beego orm自动建表时字段default值不设置的解决办法

在使用beego的orm建表时,我的模型是这样建立的 type Test struct { Id int64 Name string Sex int64 `orm:"default(1)"` Age int64 Content string `orm:"default('')"` } content字段设置默认为空,Sex字段设置默认为1,那么生成的表确并没有default,这不科学,于是我翻了下源码,发现设置default的这段被注释了,位置在 github.co

mysql workbench建表时PK,NN,UQ,BIN,UN,ZF,AI

[intrinsic column flags] (基本字段类型标识) - PK: primary key (column is part of a pk) 主键 - NN: not null (column is nullable) 非空 - UQ: unique (column is part of a unique key) 唯一 - AI: auto increment (the column is auto incremented when rows are inserted) 自增

mysql workbench 建表时 PK,NN,UQ,BIN,UN,ZF,AI解释

mysql workbench 建表时 - PK: primary key (column is part of a pk) 主键 - NN: not null (column is nullable) 非空 - UQ: unique (column is part of a unique key) 唯一 - AI: auto increment (the column is auto incremented when rows are inserted) 自增 - BIN: binary (i