你这个写法有问题,oracle不允许这样删除,如果想级联删除有两个方法实现:方法一:触发器解决,方法二:修改你的外键设置,达到级联删除的目的。如果不用级联删除的话就只有一个表一个表的删除,先删除contactcomm表再删除contact 表。
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
具体方法:
作为外键暂且叫它主表,Delete from Main Where id=@id
则要先删除子表当中 Delete from Detail where MainId = @id
为了保证数据完整性,最好将上面的 *** 作包含在一个事务中,如果两个语句影响的行数都大于零,则提交,否则回滚。
select from 表一,表二 whre 表一ID = 表二ID
或者用 select from 表一 as a inner join 表二 as b on aID = bID
一般情况下不用弄什么外键关联,ID 相同了,就可以了。
至于删除,你要先知道是哪个ID。如果想用一条语句删除俩张表的数据是不可能的。
不过,你可以使用触发器。一般都在主表上加。
你可以先做个临时表,看看临时表的结果,这样保证你自己解析的需求是否正确无误先:
declare @t(流水号1 某类型);
insert into @t(流水号1)
select 流水号1 from A Left Join B on B流水号1=A流水号1
Left join C on C流水号2=A流水号1
where B流水号1 is not null and C流水号2 is not null
And 日期时间<='2013-11-31 23:59:59' and 付款方式<>'E'
--如果上面的流水号符合条件,就一起执行下面的语句
delete from A where 流水号1 in(Select 流水号1 From @t);
delete from B where 流水号1 in(Select 流水号1 From @t);
delete from C where 流水号2 in(Select 流水号1 From @t);
希望给帮到你,欢迎追问或留言。
以上就是关于oracle删除关联表的数据,如何删除啊!下面是我写的SQL,不知道哪里出问题了,就是运行不了!全部的内容,包括:oracle删除关联表的数据,如何删除啊!下面是我写的SQL,不知道哪里出问题了,就是运行不了!、为什么sql语句从主表删除一条数据,也会把先关联的多个子表数据也删除、sql server 删除多张表关联数据 怎么删除等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)