如何删除符合某一条件的主从表记录所有记录?(100分)

  • 主题发起人 主题发起人 ard2004
  • 开始时间 开始时间
A

ard2004

Unregistered / Unconfirmed
GUEST, unregistred user!
有两个表,一个主表,一个从表,主从表通过字段"BillNo(即单据编号)"连接,在主表还有一字段"BillState(即单据状态)",我想删除主表所有单据状态为0的单据(删除该单据即意味着主表的所有符合该条件的记录删除,同时删除从表中对应的记录.),主从表在建表时没有建立任何关联,请问该如何删除?(我原来打算这样做:用一变量记录所有符合条件的单据编号,然后在从表删除所有单据编号为等于该变量的记录,但这样做有一个问题,如果符合条件的单据编号有几十个,甚至几百个,那这条删除从表记录的SQL语句是不是因为太长而不能运行啦?),我想删除主表的记录时,自动删除从表对应单据编号的所有记录,请各位大侠指点.
//主表
Create Table StockInDepot(BillNo Varchar(30) Primary Key,
BillState char(1) Default '0',
OperName VarChar(20),
OperDate SmallDateTime,
Orderno char(16),
InDepotDate SmallDateTime,
Depot Varchar(50),
StockCompany Varchar(50))
Go
//从表
Create Table StockInDepotDetail(Autoid int identity(1,1) Primary Key,
BillNo Varchar(30) not null,
WareNo Varchar(20),
WareNumber Decimal(10,5),
Price Decimal(10,3),
Memo Varchar(100))
Go
 
开个事务处理,然后用SQL语句统一删除不行吗???
 
用觸發器!
 
在一个事务里执行下面两个Sql语句
Delete from StockInDepotDetail where BillNo in (select BillNo from StockInDepot
where BillState=0)
Delete from StockInDepot where BillState=0
 
可不可以通过修改表结构或建立表间联系来达到同样的功能?也即删除主表时删除从表所有关联的记录?
 

可不可以通过修改表结构或建立表间联系来达到同样的功能?也即删除主表时删除从表所有关联的记录?
 
在后台数据库建立关系级连删除就可以
 
to zhouli_2001
能否说详细点?我很菜的.
 
删除明细表
Delete From StockInDepotDetail
where StockInDepotDetail.BillNo in (Select BillNo from StockInDepot
where BillState = '0')

删除主表
Delete From StockInDepot
where StockInDepot.BillState = '0'
 
在从表定义时用  FOREIGN KEY 关联主表强行删除从表记录
 
在SQL中建一个触发器就可以了。在后台就会自动执行。在前台太慢了。
 
像这样子能在后台自动处理的最好是在后台做速度很快的。
在前台做太慢了,如数据上万的话就不管用了。
强烈建议你用触发器。
 
多谢各位!
 
后退
顶部