所以我必须在它们之间有关系的表 - 关系类型:一对多。 我认为以下查询:
DELETE Orderstbl.*, ItemsInOrdertbl.*
FROM Orderstbl INNER JOIN ItemsInOrdertbl ON Orderstbl.OrderID = ItemsInOrdertbl.OrderId
WHERE (((Orderstbl.OrderID)=26));
将删除包含OrderID = 26的两个表中的所有行 但令我惊讶的是它填写了以下错误:
could not delete from specified tables
尝试在谷歌上找到答案,没有多大帮助,提前感谢:D
答案 0 :(得分:1)
您还可以创建包含CASCADE DELETE
的关系,然后当您从中删除时,它将从另一个中删除
来自microsoft:
如果您选择了级联删除相关记录复选框 任何时候删除主要记录中的记录,定义一个关系 表,Microsoft Access自动删除中的相关记录 相关表。例如,如果您从中删除客户记录 客户表,所有客户的订单都会自动删除 从订单表(这包括订单明细中的记录) 与订单记录相关的表格。从a删除记录时 带有级联删除相关记录的表单或数据表复选框 选中后,Microsoft Access会警告您相关记录也可能是 删除。但是,使用删除查询删除记录时, Microsoft Access自动删除相关表中的记录 没有显示警告。
使用CASCADE DELETE
是一种简单而干净的方法,可确保从两个表中删除正确的记录。
这是另一篇用MS-Access讨论CASCADE DELETE的文章。
答案 1 :(得分:0)
如果在两个表的列之间设置了外键,则必须先确保先删除子列,然后再删除主列。执行此操作的正确方法是在删除主服务器时设置约束,例如UPDATE或DELETE。约束关注外键关系,所以你永远不会在整个地方找到孤儿行。
在MySQL中创建约束(例如)......
[CONSTRAINT [symbol]] FOREIGN KEY
[index_name] (index_col_name, ...)
REFERENCES tbl_name (index_col_name,...)
[ON DELETE reference_option]
[ON UPDATE reference_option]
另一个选项是以编程方式执行,首先删除子表中的行,然后删除主表。