Yes. This can be used in various places like stock maintenance, trial balance, order processing etc.,
Here is a small sample. Create a database and run these queries. After this if you insert/update/delete any row in txn table, the stock in the item table is updated automatically.
Code: Select all
CREATE TABLE "item" ("itemcode" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , "name" VARCHAR NOT NULL UNIQUE DEFAULT "", "stock" DOUBLE NOT NULL DEFAULT 0.0);
CREATE TABLE "txn" ("date" DATE NOT NULL DEFAULT '0000-00-00', "itemcode" INTEGER NOT NULL DEFAULT 0, "receipt" DOUBLE NOT NULL DEFAULT 0.0, "issued" DOUBLE NOT NULL DEFAULT 0.0, foreign key (itemcode) references item(itemcode));
CREATE TRIGGER "delete_txn" AFTER DELETE ON txn BEGIN update item set stock = stock + old.issued - old.receipt where itemcode = old.itemcode; END;
CREATE TRIGGER "insert_txn" AFTER INSERT ON txn BEGIN update item set stock = stock + new.receipt - new.issued where itemcode = new.itemcode; END;
CREATE TRIGGER "update_txn" AFTER UPDATE ON txn BEGIN update item set stock = stock + new.receipt - old.receipt - new.issued + old.issued where itemcode = old.itemcode and old.itemcode = new.itemcode;
update item set stock = stock - old.receipt + old.issued where itemcode = old.itemcode and not old.itemcode = new.itemcode;
update item set stock = stock + new.receipt - new.issued where itemcode = new.itemcode and not old.itemcode = new.itemcode;
END;
Now run these queries:
Code: Select all
insert into item values ("Pen",0)
insert into item values ("Pencil",0)
insert into item values ("Rubber",0)
insert into txn values ('2010-05-29',1,10,0)
insert into txn values ('2010-05-29',2,10,0)
insert into txn values ('2010-05-29',3,10,0)
insert into txn values ('2010-05-29',1,0,5)
insert into txn values ('2010-05-29',2,,4)
update txn set itemcode = 2 where itemcode = 1