我想在条件为真时从多个表中删除多行。msSQL多重删除多重连接
我可以选择我想删除这个事情:
select *
from ProcessStepSt01
left join ProcessStepSt02 on ProcessStepSt01.Workpiece=ProcessStepSt02.Workpiece
left join ProcessStepSt03 on ProcessStepSt01.Workpiece=ProcessStepSt03.Workpiece
where ProcessStepSt01.Workpiece
in (
select Workpiece from Workpieces
where datediff(day,workpieces.CreationTime,current_timestamp)>=30
)
所有ProcessStepStXX包含工件(主键),TeilIO,开始,恩德和TeilVorh。所以结果是
Workpiece TeilIO TeilVorh Start Ende Workpiece_1 TeilIO_1 ... Workpiece_2 ...
1111 1 1 1 1 (null) (null) (null)
abc 1 1 1 1 abc 1 abc
但是,当我更换SELECT *与删除我得到一个错误:“错误的语法旁边留有关键字”
我也试过
delete ProcessStepSt01,ProcessStepSt02,ProcessStepSt03
(select *后的所有内容都保持不变)
但是我得到“wrong sy ntax near','“
我想要的是删除ProcessStepSt01,ProcessStepSt02,ProcesStepSt03中工件与in(...)语句中的选择相匹配的所有行。
因此,这里是我的问题:
- 为什么我的语法不行?
- 我如何使它工作?
最后我想用
CREATE TRIGGER TRG_AutoRemove
ON workpieces
AFTER INSERT AS
BEGIN
...
END
定期 做到这一点,但我认为这样做与每个插入是有点矫枉过正(大约一个插入每两到三秒)。
有没有办法每小时/每天做一次?
请注意:我正在使用MSSQL。
感谢您的建议。