设定你的表如下:
A表
字段:姓名,费用,科目ID(语文1,数学2)
B表
字段:语文人数, 数学人数
代码如下:(A表的AfterInsert事件)
procedure TDataForm.TableAAfterInsert(DataSet: TDataSet);
begin
if not TableB.Active then
TableB.Active := True;
TableB.Edit;
Case DataSet.FieldByName('科目ID').AsInteger of
1: TableB.FieldByName('语文人数').AsInteger := TableB.FieldByName('语文人数').AsInteger + 1;
2: TableB.FieldByName('语文人数').AsInteger := TableB.FieldByName('语文人数').AsInteger + 1;
end;
TableB.post;
end;
(A表的AfterDelete事件)
procedure TDataForm.Table1AfterDelete(DataSet: TDataSet);
begin
if not TableB.Active then
TableB.Active := True;
TableB.Edit;
Case DataSet.FieldByName('科目ID').AsInteger of
1: TableB.FieldByName('语文人数').AsInteger := TableB.FieldByName('语文人数').AsInteger - 1;
2: TableB.FieldByName('语文人数').AsInteger := TableB.FieldByName('语文人数').AsInteger - 1;
end;
TableB.post;
end;
这两个事件实际上和触发器的原理是一样的,只是如果你用SQL服务器的话当然是写在服务器端好。