SQl语句的级联删除问题
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.com.cn]) - 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语句的级联删除问题:等您坐沙发呢!