Does SQLite store the lastmodified date of a row?

개요


SQLite 는 자체적으로 생성 / 수정 시간을 추적하지 않는다.

CREATE TABLE appInfo (
    bundle_id       TEXT NOT NULL
                         PRIMARY KEY,
    appname         TEXT,
    title           TEXT DEFAULT appname,
    display_image   TEXT DEFAULT [default.gif],
    full_size_image TEXT DEFAULT [default.gif],
    bundle_version  TEXT DEFAULT [1.0],
    company_id      TEXT,
    ipaname         TEXT,
    createdatetime  TEXT DEFAULT (strftime('%Y-%m-%d %H:%M:%S:%s', 'now', 'localtime') ),
    updatedatetime  TEXT DEFAULT (strftime('%Y-%m-%d %H:%M:%S:%s', 'now', 'localtime') ) 
);

//트리거 생성 필요
CREATE TRIGGER update_appInfo_updatetime
        BEFORE UPDATE
            ON appInfo
BEGIN
    UPDATE appinfo
				//string 포맷 사용
       SET updatedatetime = strftime('%Y-%m-%d %H:%M:%S:%s', 'now', 'localtime') 
     WHERE bundle_id = old.bundle_id;
END;

예 2)

CREATE TRIGGER update_seat_updatetime
        BEFORE UPDATE
            ON seat
BEGIN
    UPDATE seat
				//datetime 포맷으로 생성
       SET modified_date = datetime('now','localtime')
     WHERE id = old.id;
END;

too many levels of trigger recursion


SQLite - too many levels of trigger recursion

만약 트랜잭션을 걸고, update 를 여러번 실행하면 다음과 같은 오류가 발생할 수 있다.

Untitled