Program

SQLチートシート

PostgreSQL

MariaDB (MySQL)

SQLite

自動時刻更新

PostgreSQL

#
# TABLE 作成
#
CREATE TABLE IF NOT EXISTS <テーブル名> (
  created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);

#
# FUNCTION 作成
#
CREATE OR REPLACE FUNCTION <関数名>()
RETURNS TRIGGER AS $$
BEGIN
  NEW.updated_at = NOW();
  RETRN NEW;
END;
$$ language plpgsql;

#
# TRIGGER 作成
#
CREATE OR REPLACE TRIGGER <トリガー名> BEFORE UPDATE ON <テーブル名>
FOR EACH ROW EXECUTE PROCEDURE <関数名>()

MariaDB (MySQL)

#
# TABLE 作成
#
CREATE TABLE IF NOT EXISTS <テーブル名> (
  created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

SQLite

#
# TABLE 作成
#
CREATE TABLE IF NOT EXISTS <テーブル名> (
  created_at TEXT NOT DEFAULT (DATETIME('now', 'localtime')),
  updated_at TEXT NOT DEFAULT (DATETIME('now', 'localtime'))
);

#
# TRIGGER 作成
#
CREATE TRIGGER IF NOT EXISTS <トリガー名> AFTER UPDATE ON <テーブル名>
  BEGIN
    UPDATE <テーブル名> SET updated_at = DATETIME('now', 'localtime') WHERE rowid = NEW.rawid;
  END;
トップ   一覧 検索 最終更新   ヘルプ   最終更新のRSS