Я пробую команду Sqlite3 REPLACE (INSERT OR REPLACE).Мне нравится сохранять созданный datetime (creDT) и update datetime (updDT).Поэтому я создал базу данных и триггер для INSERT (creDT & updDT) и одну для UPDATE (updDT), но каждый REPLACE (особенно тот, где первичный ключ уже существует) заканчивается текущим временем в creDT и updDT.ЗАМЕНИТЕ УДАЛИТЬ И ВСТАВИТЬ вместо ОБНОВЛЕНИЯ?
Это стандартное поведение или я что-то не так делаю?
def createDbTables(self):
self.sqlCursor.execute("""
CREATE TABLE rfdetector (
sn TEXT PRIMARY KEY,
detector TEXT,
hex TEXT,
updDT DATE,
creDT DATE)
""")
self.sqlCursor.execute("""
CREATE TRIGGER insert_rfdetector_creDT
AFTER INSERT ON rfdetector
BEGIN
UPDATE rfdetector SET creDT = DATETIME('now','localtime') WHERE rowid = new.rowid;
UPDATE rfdetector SET updDT = DATETIME('now','localtime') WHERE rowid = new.rowid;
END;
""")
self.sqlCursor.execute("""
CREATE TRIGGER update_rfdetector_updDT
AFTER UPDATE ON rfdetector
BEGIN
UPDATE rfdetector SET updDT = DATETIME('now','localtime') WHERE rowid = new.rowid;
END;
""")
def insertSql(self, data):
self.sqlCursor.execute(
'REPLACE INTO rfdetector (sn, hex, detector) VALUES (?, ?, ?)',
(data.serialNumber, data.hex, data.detector))