精华内容
下载资源
问答
  • SQL级联删除

    2021-01-22 11:08:28
    SQL级联删除——删除主表同时删除从表——同时删除具有主外键关系的表(转载) create table a ( id varchar(20) primary key, password varchar(20) not null ) create table b ( id int identity(1,1) primary ...

    SQL级联删除——删除主表同时删除从表——同时删除具有主外键关系的表(转载)

    create table a
    (
    id  varchar(20) primary key,
    password varchar(20) not null
    )
    
    create table b
    (
    id int identity(1,1)  primary key,
    name varchar(50) not null,
    userId varchar(20),
    foreign key (userId) references a(id) on delete cascade
    )
    

    表B创建了外码userId 对应A的主码ID,声明了级联删除 测试数据:

    insert a values ('11','aaa')
    insert a values('23','aaa')
    insert b values('da','11')
    insert b values('das','11')
    insert b values('ww','23')
    

    删除A表内id为‘11’的数据,发现B表内userId 为“11”也被数据库自动删除了,这就是级联删除

    delete a where id='11'
    展开全文
  • sql级联删除

    2021-01-28 06:22:24
    功能:在删除主表时,自动...在级联删除中,还删除其外键值引用删除的主键值的所有行。如:create database tempgouse tempgocreate table UserInfo(UserId int identity(1,1) primary key ,UserName varchar(20),...

    功能:在删除主表时,自动删除副表(外键约束)相应内容

    删除包含主键值的行的操作,该值由其它表的现有行中的外键列引用。在级联删除中,还删除其外键值引用删除的主键值的所有行。

    如:

    create database temp

    go

    use temp

    go

    create table UserInfo

    (

    UserId int identity(1,1) primary key ,

    UserName varchar(20), --用户名

    password varchar(20) not null --密码

    )

    create table UserDetails

    (

    id int identity(1,1) primary key,

    name varchar(50) not null, --真实姓名

    userId int,

    foreign key (userId) references UserInfo(UserId) on delete cascade

    )

    insert UserInfo values ('ly','jeff')

    insert UserInfo values('wzq','wzqwzq')

    insert UserInfo values('lg','lglg')

    insert UserDetails values('李四',1)

    insert UserDetails values('王五',2)

    insert UserDetails values('刘六',3)

    sqlserver 支持级联更新和删除

    oracle 只支持级联删除

    alter table 表名

    add constraint 外键名

    foreign key(字段名) references 主表名(字段名)

    on delete cascade

    语法:

    Foreign Key

    (column[,...n])

    references referenced_table_name[(ref_column[,...n])]

    [on delete cascade]

    [on update cascade]

    注释:

    column:列名

    referenced_table_name:外键参考的主键表名称

    ref_name:外键要参考的表的主键列

    on delete:删除级联

    on update:更新级联

    0

    0

    0

    (请您对文章做出评价)

    此时:Delete From UserInfo Where UserId = 1 就可删除UserInfo表和UserDetails表的UserId=1 的内容

    展开全文
  • SQL 级联操作

    2021-08-12 21:38:15
    级联操作 级联更新 两张表添加级联更新操作后,主表键值被修改时,添加外键的表中的值也会随之修改。 添加级联更新,外键名是自定义的 #添加级联更新 ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY (表中...

    级联操作

    • 级联更新

      两张表添加级联更新操作后,主表键值被修改时,添加外键的表中的值也会随之修改。

      添加级联更新,外键名是自定义的

      #添加级联更新
      ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY (表中添加外键的列名) REFERENCES 主表(主表列) ON UPDATE CASCADE;
      
      #添加级联更新
      ALTER TABLE emp ADD CONSTRAINT emp_dep FOREIGN KEY (dep_id) REFERENCES dep(id) ON UPDATE CASCADE;
      
    • 级联删除

      主表中的数据被删除时,被级联的表的数据也会被删除

      #添加级联删除
      ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY (添加外键的列名) REFERENCES 主表(主表列) ON UPDATE CASCADE ON DELETE CASCADE;
      #添加级联删除
      ALTER TABLE emp ADD CONSTRAINT emp_dep FOREIGN KEY (dep_id) REFERENCES dep(id) ON UPDATE CASCADE ON DELETE CASCADE;
      
      #创建员工表
      CREATE TABLE emp(
      id INT,
      name VARCHAR(30),
      dep_id INT
      );
      #创建部门表
      CREATE TABLE dep(
      id INT,
      dep_name VARCHAR(30),
      dep_city VARCHAR(30)
      );
      
      #给员工表添加主键
      ALTER TABLE emp MODIFY id INT PRIMARY KEY;
      #给部门表添加主键
      ALTER TABLE dep MODIFY id INT PRIMARY KEY;
      
      #给员工表添加数据
      INSERT INTO emp(id,name,dep_id) VALUE(1,'小王',1);
      INSERT INTO emp(id,name,dep_id) VALUE(2,'大王',2);
      
      #给部门表添加数据
      INSERT INTO dep(id,dep_name,dep_city) VALUE(1,'研发部','非洲');
      INSERT INTO dep(id,dep_name,dep_city) VALUE(2,'销售部','南极洲');
      
      #添加级联更新
      ALTER TABLE emp ADD CONSTRAINT emp_dep FOREIGN KEY (dep_id) REFERENCES dep(id) ON UPDATE CASCADE;
      
      #删除外键,测试级联删除
      ALTER TABLE emp DROP FOREIGN KEY emp_dep;
      
      #添加级联删除
      ALTER TABLE emp ADD CONSTRAINT emp_dep FOREIGN KEY (dep_id) REFERENCES dep(id) ON UPDATE CASCADE ON DELETE CASCADE;
      
      #删除一行测试级联删除
      DELETE FROM dep WHERE id=2;
      
      #测试级联更新
      UPDATE dep SET id=3 WHERE id=1;
      
      #查询两张表
      SELECT * FROM emp;
      SELECT * FROM dep;
      
    展开全文
  • SQl语句的级联删除问题删除应该有顺序1,删除link表delete from ref,link where ref.link_code=link.link_code and link_id=?delete from link where link_id=?2,删除plan表delete from ref,plan where ref.plan_...

    SQl语句的级联删除问题

    删除应该有顺序

    1,删除link表

    delete from ref,link where ref.link_code=link.link_code and link_id=?

    delete from link where link_id=?

    2,删除plan表

    delete from ref,plan where ref.plan_code=plan.plan_code and plan_id=?

    delete from plan where plan_id=?

    SQL 怎幺级联删除语句

    方法一:

    MSSQLSERVER是支持级联更新和级联删除的,你要在建立外键的时候,要指定

    EP:

    alter table tb_userroles

    add constraint FK_TB_USERR_RELATIONS_TB_FUNCT foreign key (gnbm)

    references tb_function (gnbm)

    on update cascade on delete cascade

    方法二:用数据库触发器

    sql如何通过外键约束实现级联删除和更新

    设定外键为级联删除就可以了。

    alter table B add constraint fk_ID foreign key (ID) references A(ID) on delete cascade;

    这样只需:delete from A where ID=nnnn; 就可以自动删除对应B表内容了。

    通过外键无法实现同步更新。

    sql中级联删除,级联更新是怎幺理解的?

    级联删除你可以把它认为是一个触发器,也就是你删除主表中的数据,那幺从表中的相关联的也就一起删除了。。。看个例子:======================create table a

    (

    id varchar(20) primary key,

    password varchar(20) not null

    )

    create table b

    (

    id int identity(1,1) primary key,

    name varchar(50) not null,

    userId varchar(20),

    foreign key (userId) references a(id) on delete cascade

    )

    表B创建了外码userId 对应A的主码ID,声明了级联删除

    测试数据:

    insert a values ('11','aaa')

    insert a values('23','aaa')

    insert b values('da','11')

    insert b values('das','11')

    insert b values('ww','23')

    删除A表内id为‘11’的数据,发现B表内userId 为“11”也被数据库自动删除了,这就是级联删除

    delete a where id='11'=============================================================级联更新也大同小异。。只是关键字为:on update希望回答对你有所帮助........

    sql server中如何级联删除?

    可以用下边的方法,仅供参考:

    --?创建测试主表.?ID?是主键.

    CREATE?TABLE?test_main?(

    id??????INT???NOT?NULL,

    value???VARCHAR(10),

    PRIMARY?KEY(id)

    );

    --?创建测试子表.

    CREATE?TABLE?test_sub?(

    id??????INT??NOT?NULL,

    main_id?INT?,

    value???VARCHAR(10),

    PRIMARY?KEY(id)

    );

    --?插入测试主表数据.

    INSERT?INTO?test_main(id,?value)?VALUES?(1,?'ONE');

    INSERT?INTO?test_main(id,?value)?VALUES?(2,?'TWO');

    --?插入测试子表数据.

    INSERT?INTO?test_sub(id,?main_id,?value)?VALUES?(1,?1,?'ONEONE');

    INSERT?INTO?test_sub(id,?main_id,?value)?VALUES?(2,?2,?'TWOTWO');

    然后,创建外键,使用?ON?DELETE?CASCADE?选项,删除主表的时候,同时删除子表

    ALTER?TABLE?test_sub?ADD?CONSTRAINT?main_id_cons?FOREIGN?KEY?(main_id)??REFERENCES??test_main??ON?DELETE?CASCADE;

    执行删除:

    DELETE?FROM?TEST_MAIN?WHERE?ID?=?1;

    最后:

    SELECT?*?FROM?TEST_MAIN;

    结果子表中就只有ID=2的记录,也就说明级联删除成功。

    SQL 怎幺级联删除语句???

    方法一:

    MSSQLSERVER是支持级联更新和级联删除的,你要在建立外键的时候,要指定

    EP:

    alter table tb_userroles

    add constraint FK_TB_USERR_RELATIONS_TB_FUNCT foreign key (gnbm)

    references tb_function (gnbm)

    on update cascade on delete cascade

    方法二:用数据库触发器

    SQL server中怎幺修改级联删除修改

    在创建表的时候就需要设置级联删除和级联更新(修改)。方法如下:

    alter?table?SZ_Picture

    add?constraint?FK_SZ_PICTU_RELATIONS_SZ_PICTU?foreign?key?(pictureTypeId)

    references?SZ_PictureType?(pictureTypeId)

    on?update?cascade?on?delete?cascade?--其中这句就是级联更新和级联删除

    级联删除:

    删除包含主键值的行的操作,该值由其它表的现有行中的外键列引用。在级联删除中,还删除其外键值引用删除的主键值的所有行。

    级联更新:

    更新主键值的操作,该值由其它表的现有行中的外键列引用。在级联更新中,更新所有外键值以与新的主键值相匹配。

    如何实现SQL与Oracle外键约束中的级联删除的方法

    系统中要删除一条记录,就要关联到同时删除好多张表,它们之间还存在着约束关系.所以考虑到在创建表时加上约束关系,详细内容如下:

    SQL的外键约束可以实现级联删除与级联更新;

    ORACLE则只充许级联删除。

    SQL级联删除与级联更新使用格式:

    CREATE TABLE A001(ID INT PRIMARY KEY,NAME VARCHAR(20))

    CREATE TABLE A002(ID INT REFERENCES A001(ID)ON DELETE CASCADE ON UPDATE CASCADE,AGE TINYINT)

    ORACLE级联删除使用格式:

    CREATE TABLE A001(ID INT PRIMAY KEY,NAME VARCHAR2(20))

    CREATE TABLE A002(ID INT REFERENCES A001(ID)ON DELETE CASCADE,AGE NUMBER(2,0))

    --------------

    CREATE TABLE groups

    (

    id VARCHAR2(16) CONSTRAINT pk_groupid PRIMARY KEY,

    name VARCHAR2(32),

    description VARCHAR2(50)

    )

    TABLESPACE userspace;

    CREATE TABLE usringrp

    (

    group_id VARCHAR2(16) CONSTRAINT fk_uing_grpid

    REFERENCES groups(id)

    ON DELETE CASCADE,

    user_id VARCHAR2(16)

    )

    TABLESPACE userspace;

    ---------------

    PowerDesigner

    参照完整性约束

    来源:([blog.sina.空白.空白]) - SQL与Oracle外键约束中的级联删除_点点_新浪博客

    限制(Restrict)。不允许进行修改或删除操作。若修改或删除主表的主键时,如果子表中存在子记录,系统将产生一个错误提示。这是缺省的参照完整性设置。

    置空(Set Null)。如果外键列允许为空,若修改或删除主表的主键时,把子表中参照的外键列设置为空值(NULL)。

    置为缺省(Set Default)。如果指定了缺省值,若修改或删除主表的主键时,把子表中参照的外键设置为缺省值(Default)。

    级联(Cascade)。把主表中主键修改为一个新的值时,相应修改子表中外键的值;或者删除主表中主键的记录时,要相应删除子表中外键的记录。

    注意:在oracle中建立好的constraint (包括primay key,foreign key) 如果要修改,必须先alter table drop contraint con_name;然后再重新add constraint

    oracle 创建表 时设置 级联删除和级联更新 的语句

    外键只能是参照表的主键,所以应该参照userid,要参照uname只能用触发器。

    create table users (userid primary key,uname unique)

    go

    create table board (bid primary key,bhost, foreign key(bhost) references users(userid) on delete CASCADE on update CASCADE)

    sql语句从主表删除一条数据,并且把先关联的多个子表数据也删除

    DELETE FROM table WHERE date in('c','e','f')

    *

    结构化查询语言(Structured Query Language)简称SQL,结构化查询语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;

    *

    用外键关联删除,把B表的uid设成外键关联A表的ID,并关联删除操作。

    *

    用存储过程,用事务来处理实现。

    *

    创建数据库:CREATE DATABASE database-name删除数据库

    *

    drop database dbname

    *

    创建新表create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)

    *

    删除新表:drop table tabname

    *

    增加一个列:Alter table tabname add column col type

    *

    添加主键:Alter table tabname add primary key(col)

    *

    删除主键:Alter table tabname drop primary key(col)

    *

    创建索引:create [unique] index idxname on tabname(col….)

    *

    删除索引:drop index idxname

    *

    创建视图:create view viewname as select statement

    *

    删除视图:drop view viewname

    展开全文
  • SQL级联操作

    2021-10-10 21:16:58
    级联操作时存在于主表和从表的关系中,当主表中的数据发生了改变,要求子表中的数据也随之更新或者删除 删除: 一、先删除子表中引用的数据,再删除主表的数据 二、使用级联删除,在创建外键约束时指定 constraint ...
  • on delete cascade当你更新或删除主键表时,那么外键表也会跟随一起更新或删除,需要在建表时设置级联属性CREATE TABLE Countries(CountryId INT PRIMARY KEY)INSERT INTO Countries (CountryId) VALUES (1)INSERT ...
  • on delete cascade当你更新或删除主键表时,那么外键表也会跟随一起更新或删除,需要在建表时设置级联属性CREATE TABLE Countries(CountryId INT PRIMARY KEY)INSERT INTO Countries (CountryId) VALUES (1)INSERT ...
  • SQL的解析非常消耗CPU的资源,如果一条SQL在Shared pool中已经存在,则进行的仅是软解析(在Shared pool中寻找相同SQL),这将大大提高数据库的运行效率。当然,这部分内存也并非越大越好,太大的Shared pool,oracle...
  • 我刚毕业。我也是刚开始工作。@parentId 是我申明的一个变量,用于存储,主表中的Id。大致的意思:1.游标遍历主表中的每一行数据,同行,遍历一行,就存储一下,把主表的主键Id存储在@parentId中。...
  • 触发器是与表有关的数据库对象,指在 insert/update/delete 之前或之后,触发并执行触发器中定义的SQL语句集 合。触发器的这种特性可以协助应用在数据库端确保数据的完整性 , 日志记录 , 数据校验等操作 。 使用别名...
  • Mysql级联删除

    2021-01-18 18:38:35
    首先是测试环境了。我的是phpmyadmin ... 第三:在phpmyadmin中设置级联更新和删除的时候是 在删除文章的时候级联删除文章表的评论,这个功能还是蛮实用的。有兴趣的可以测试,如果本文章中有错误,欢迎指出。谢谢
  • Oracle级联操作详解

    2021-05-02 05:33:58
    Oracle外键级联删除和级联更新1 级联删除在添加foreing key约束时,还可以指定级联操作的类型,主要用于确定当删除(on delete) 附表中的一条记录时,如何处理子表中的外键字段,有如下三种引用类型。Oracle在外键的...
  • selectt.destinationfromairlinetstart withorigin='CAN'connectby priordestination=origin;查询结果:DESTINATION-------------------CSXSHAXIYSWAPEKURCSHAXIYSWA9 rows selected.---------------...
  • 需求描述今日需求是删除资源时同时删除与该资源绑定的角色数据,有两张表,资源表、角色与资源绑定表,级联删除的时候有两种方法:①建立表时直接建立约束,当父表删除数据时数据库会自动去删除子表中的数据,②通过代码...
  • 1.级联删除sql server版:create table a(id varchar(20) primary key,password varchar(20) not null)create table b(id int identity(1,1) primary key,name varchar(50) not null,userId varchar(20),foreign ...
  • sql触发器级联删除

    2021-05-03 01:19:10
    set ANSI_NULLS ONset QUOTED_IDENTIFIER ONGO-- =============================================-- Description: 删除类别触发器-- =============================================ALTER TRIGGER [dbo].[trigDelete...
  • 级联查询select level||'层',lpad('*',level*5)||id id ,connect_by_isleaffrom teststart with superid = '0' connect by prior id=superid;/*------method one------*/select superid,ltrim(max(sys_connect_by_...
  • 使用connect by进行级联查询connect by可以用于级联查询,常用于对具有树状结构的记录查询某一节点的所有子孙节点或所有祖辈节点。来看一个示例,现假设我们拥有一个菜单表t_menu,其中只有三个字段:id、name和...
  • SQL之分配、收回权限

    2021-03-27 21:07:37
    不同用户对同一数据库中的数据有不同的权限,数据库的所有者对该数据库有分配的权限。 分配权限 基本格式为: GRANT <list of privileges> ON <relation or other object> ...list of authorization ID’s&...
  • SQL触发器:当改变(增、删、改)数据表的记录时,绑定在SQL语句(增、删、改)中的触发器能够触发某些事件或者函数,所以我们可以在触发器中编写一些处理语句。比如,当我们删除新闻类别的时候,由于外键的原因,我们...
  • 数据库多表级联操作在实际数据表操作过程中,我们需要注意数据表数据的完整性,尤其是在存在关联关系的多个表操作过程中,一个表中数据发生变化必然会影响到相关表数据的改变。这也是我们在设计开发数据库过程中所需...
  • 一、SQL:1)mysql存储结构:数据库->表->数据sql语句2)管理数据库:增加:createdatabase数据库defaultcharacter set utf8;删除:dropdatabase数据库;修改:alterdatabase数据库defaultcharacter gbk;查询:...
  • #数据库的设计(数据库的设计直接影响到项目的开发难易层度)根据范式进行设计 #多表之间的关系:1vs1;1vs对;多vs多 #1vs多:在多的一方建立外键,指向1的一方的主键 #多vs多:借助第三方中间表:中间表至少包含两...
  • 这里整理了Oracle中的三种级联操作,其中Oracle定义外健的时候可以定义级联删除,但是没有级联修改的语法,当然可以用触发器实现,下面我们详细来看Oracle数据库中的级联查询、级联删除、级联更新操作教程 ...
  • 1. 触发器方法createTriggerTrigger_NameonTable1afterdelete,UPDATEasbeginsetnocounton;ifexists(select*frominserted)updateTable2setfield1=(selectfield1frominserted)wherefield1=(selectf...
  • } 注意:Oracle在java代码里取出重复值与SqlServer不一样,它得使用: SELECT distinct new CustomManage(tsFrom,'2') FROM CustomManage C WHERE C.tsFrom IS NOT NULL ORDER BY tsFrom ASC 先new实体bean...
  • 此篇文章中所示用的sql语句适用于mysql关系型数据库查询数据,其他类型的数据库是否支持,没有去尝试,想要在mysql1.首先准备两个表,一个是学生表(student) 另一个是科目分数表(grade) 当数据准备完成后,接下来就...
  • 怎么添加外键约束

    2021-02-03 06:47:59
    展开全部alter table 表 add constraint 外键约束名称 foreign key (列) references 表 (主键列);如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为62616964757a686964616fe4b893e5b19e...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 52,898
精华内容 21,159
关键字:

sql级联