仅凭sql不可能实现,多条实现先删从表再删主表
楼主的需求解决方案
1.如果是编程实现,java框架hibernate的cascade可以模拟做到删主去重
2.表中设置好级联删除 这样设定好表后 可以实现删主去重 oracle为例
alter table AAA add constraint asd foreign key (BBB) references CCC(DDD) on delete cascade;
3.新增delete的行级触发器
4.存储过程 包含多条delete语句,使用时调用该过程
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
如果建立了主外键约束,那么这个约束是可以关联删除的(建立的时候要加一个参数,这是oracle的写法,如果你不是oracle我不清楚其他数据库能不能这样做)。
建立触发器,这个所有数据库都可以。你这里就是after delete触发,也是删除语句,这个是可以的。
建议你写个存储过程,我写的一个,让你参考一下!CardNo是自定义的数据类型!用触发器容易出错
CREATE PROCEDURE DelFixUser
@CardNo CardNo
AS
Declare @CarNo CarNo
select @CarNo=车辆号码 from FixCardIndexTable
where 卡号=@CardNo
Delete from AllCardIndexTable
where 卡号=@CardNo
Delete from FixCardIndexTable
where 卡号=@CardNo
Delete from FixCardEndDateTable
where 卡号=@CardNo
Delete from CardPassWordTable
where 卡号=@CardNo
Delete from UserCarInfoTable
where 车辆牌号=@CarNo
说明:删除一个固定用户记录,同时从AllCardIndexTable、FixCardIndexTable、FixCardEndDateTable、CardPassWordTable和UserCarInfoTable表中删除相应的记录。