Trigger

如何使用觸發器將一個表列添加到另一個 id 與 Sqlite 匹配的表列

  • November 13, 2020

下面是我的帶有兩個表的 SQLite 數據庫。

import sqlite3


conn=sqlite3.connect('calc.db')
conn.execute("""CREATE TABLE IF NOT EXISTS sum
       (id TEXT UNIQUE,
   name    TEXT,
   total   TEXT 
   )""")

conn.execute("""CREATE TABLE IF NOT EXISTS newtable
       (id TEXT,
   name    TEXT,
   num TEXT 
   )""")

conn.execute("""INSERT INTO sum(id, name, total) \
   VALUES('001', 'name1', '')""")
conn.execute("""INSERT INTO sum(id, name, total) \
   VALUES('002', 'name2', '')""")
#
conn.execute("""INSERT INTO newtable(id, name, num) \
   VALUES('001', 'name1', '1000')""")
conn.execute("""INSERT INTO newtable(id, name, num) \
   VALUES('002', 'name2', '2000')""")
conn.execute("""INSERT INTO newtable(id, name, num) \
   VALUES('001', 'name1', '4000')""")


conn.commit()
conn.close()

Sum tableunique id並且newtable id不是唯一的。我想執行加法,sum tabletotal column插入時應該從 newtable 列中獲取加法值,如果 id 匹配。鋤頭做。我的專欄是文本類型。如果在 TEXT 類型中不可行,我可以將其更改為整數,但如果可能的話,最好繼續使用 TEXT 類型。怎麼做。

您可以將觸發器添加到您的 python 腳本

CREATE TABLE IF NOT EXISTS sum
        (id TEXT UNIQUE,
    name    TEXT,
    total   TEXT 
    )
CREATE TABLE IF NOT EXISTS newtable
        (id TEXT,
    name    TEXT,
    num TEXT 
    )
INSERT INTO sum(id, name, total) 
    VALUES('001', 'name1', '');
INSERT INTO sum(id, name, total) 
    VALUES('002', 'name2', '');
CREATE TRIGGER sum_after_insert
   AFTER INSERT ON newtable
BEGIN
  UPDATE sum SET total = total + NEW.num WHERE id = NEW.id;
END;
INSERT INTO newtable(id, name, num) 
    VALUES('001', 'name1', '1000');
INSERT INTO newtable(id, name, num) 
    VALUES('002', 'name2', '2000');
INSERT INTO newtable(id, name, num) 
    VALUES('001', 'name1', '4000');
SELECT * FROM sum;
編號 | 姓名 | 全部的
:-- | :---- | :----
001 | 名稱1 | 5000
002 | 名稱2 | 2000

db<>在這裡擺弄

引用自:https://dba.stackexchange.com/questions/279632