CREATE TABLE intvars (
name PRIMARY KEY NOT NULL
, value INTEGER
);
CREATE TABLE transactions (
id INTEGER PRIMARY KEY AUTOINCREMENT
, dt REAL DEFAULT (julianday('now'))
, cm TEXT
);
CREATE TABLE T1 (
transid INTEGER PRIMARY KEY NOT NULL REFERENCES transactions(id) ON UPDATE CASCADE ON DELETE CASCADE
, tx TEXT
);
CREATE TABLE T2 (
transid INTEGER PRIMARY KEY NOT NULL REFERENCES transactions(id) ON UPDATE CASCADE ON DELETE CASCADE
, tx TEXT
);
CREATE VIEW vtrans AS
SELECT transactions.id, datetime(transactions.dt),transactions.cm
, T1.tx AS tx1
, T2.tx AS tx2
FROM transactions
LEFT OUTER JOIN T1 ON T1.transid=transactions.id
LEFT OUTER JOIN T2 ON T2.transid=transactions.id;
CREATE TRIGGER instrans INSTEAD OF INSERT ON vtrans
FOR EACH ROW
BEGIN
INSERT INTO transactions (cm) VALUES (NEW.cm);
INSERT OR REPLACE INTO intvars (name,value) VALUES ('transid',last_insert_rowid());
INSERT INTO T1 (transid,tx) VALUES ((SELECT value FROM intvars WHERE name='transid'),NEW.tx1);
INSERT INTO T2 (transid,tx) VALUES ((SELECT value FROM intvars WHERE name='transid'),NEW.tx2);
END;
.echo on
INSERT INTO vtrans (cm,tx1,tx2) VALUES ('trans1','trans1val1','trans1val2');
SELECT * FROM transactions;
SELECT * FROM T1;
SELECT * FROM T2;
SELECT * FROM vtrans;
Q1JFQVRFIFRBQkxFIGludHZhcnMgKAoJbmFtZSAgUFJJTUFSWSBLRVkgTk9UIE5VTEwKLAl2YWx1ZSBJTlRFR0VSCik7CgpDUkVBVEUgVEFCTEUgdHJhbnNhY3Rpb25zICgKCWlkIElOVEVHRVIgUFJJTUFSWSBLRVkgQVVUT0lOQ1JFTUVOVAosCWR0IFJFQUwgREVGQVVMVCAoanVsaWFuZGF5KCdub3cnKSkKLAljbSBURVhUCik7CgpDUkVBVEUgVEFCTEUgVDEgKAoJdHJhbnNpZCBJTlRFR0VSIFBSSU1BUlkgS0VZIE5PVCBOVUxMIFJFRkVSRU5DRVMgdHJhbnNhY3Rpb25zKGlkKSBPTiBVUERBVEUgQ0FTQ0FERSBPTiBERUxFVEUgQ0FTQ0FERQosCXR4IFRFWFQKKTsKCkNSRUFURSBUQUJMRSBUMiAoCgl0cmFuc2lkIElOVEVHRVIgUFJJTUFSWSBLRVkgTk9UIE5VTEwgUkVGRVJFTkNFUyB0cmFuc2FjdGlvbnMoaWQpIE9OIFVQREFURSBDQVNDQURFIE9OIERFTEVURSBDQVNDQURFCiwJdHggVEVYVAopOwoKQ1JFQVRFIFZJRVcgdnRyYW5zIEFTClNFTEVDVCB0cmFuc2FjdGlvbnMuaWQsIGRhdGV0aW1lKHRyYW5zYWN0aW9ucy5kdCksdHJhbnNhY3Rpb25zLmNtCiwJVDEudHggQVMgdHgxCiwJVDIudHggQVMgdHgyCiAgRlJPTSB0cmFuc2FjdGlvbnMKICBMRUZUIE9VVEVSIEpPSU4gVDEgT04gVDEudHJhbnNpZD10cmFuc2FjdGlvbnMuaWQKICBMRUZUIE9VVEVSIEpPSU4gVDIgT04gVDIudHJhbnNpZD10cmFuc2FjdGlvbnMuaWQ7CgpDUkVBVEUgVFJJR0dFUiBpbnN0cmFucyBJTlNURUFEIE9GIElOU0VSVCBPTiB2dHJhbnMKRk9SIEVBQ0ggUk9XCkJFR0lOCglJTlNFUlQgSU5UTyB0cmFuc2FjdGlvbnMgKGNtKSBWQUxVRVMgKE5FVy5jbSk7CglJTlNFUlQgT1IgUkVQTEFDRSBJTlRPIGludHZhcnMgKG5hbWUsdmFsdWUpIFZBTFVFUyAoJ3RyYW5zaWQnLGxhc3RfaW5zZXJ0X3Jvd2lkKCkpOwoJSU5TRVJUIElOVE8gVDEgKHRyYW5zaWQsdHgpIFZBTFVFUyAoKFNFTEVDVCB2YWx1ZSBGUk9NIGludHZhcnMgV0hFUkUgbmFtZT0ndHJhbnNpZCcpLE5FVy50eDEpOwoJSU5TRVJUIElOVE8gVDIgKHRyYW5zaWQsdHgpIFZBTFVFUyAoKFNFTEVDVCB2YWx1ZSBGUk9NIGludHZhcnMgV0hFUkUgbmFtZT0ndHJhbnNpZCcpLE5FVy50eDIpOwpFTkQ7Ci5lY2hvIG9uCgpJTlNFUlQgSU5UTyB2dHJhbnMgKGNtLHR4MSx0eDIpIFZBTFVFUyAoJ3RyYW5zMScsJ3RyYW5zMXZhbDEnLCd0cmFuczF2YWwyJyk7CgpTRUxFQ1QgKiBGUk9NIHRyYW5zYWN0aW9uczsKU0VMRUNUICogRlJPTSBUMTsKU0VMRUNUICogRlJPTSBUMjsKU0VMRUNUICogRlJPTSB2dHJhbnM7Cg==