データベース時間のデフォルト
データベース時間のデフォルト
NOW()からデータベースへ
RDBSを使用する場合にMongooseを使用するのとは異なり、直接クエリー文を作成しています.Insert
文の作成時には、作成時間と修正時間を保存するために、NOW()
により現在時刻が記述される.
しかし、Insert
文を記入するたびに、Update
文を記入するたびに、照会はNOW()
文を記入しますか?
Table作成時のDefault
Insert
、Update
で何気なくNOW()
で時間値が生成されていますが、考えてみればTableを生成する際にDefaultとして使えるはずです.△私は質問を受けて、そうだと思いました.CREATE TABLE posts (
title varchar(100) NOT NULL,
created timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
);
その結果、次のように時間をデフォルト値として保存できます.
更新するときの基本は?
ただし、Update
を行う場合、基本更新は変更されない.
MySQL
MySQL
を使用している場合は、
このため、Tableは次のように作成できます.CREATE TABLE posts (
title varchar(100) NOT NULL,
created timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
PostgreSQL
ただし、PostgreSQL
を使用する場合は適用されません.
MySQLとPostgreSQLの比較PostgreSQL
がトリガを使用することを確認した場合、Update
の現在の時間がデフォルトです.CREATE OR REPLACE FUNCTION update_updated_column()
RETURNS TRIGGER AS '
BEGIN
NEW.updated = NOW();
RETURN NEW;
END;
' LANGUAGE 'plpgsql';
CREATE TRIGGER update_updated_modtime BEFORE UPDATE
ON posts FOR EACH ROW EXECUTE PROCEDURE
update_updated_column();
フリップフロップの結果から、updated
をNOW()
に更新したFUNCTION
が生成され、Update
で対応するFUNCTION
が実行される.
参考資料
CREATE TABLE posts (
title varchar(100) NOT NULL,
created timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE posts (
title varchar(100) NOT NULL,
created timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
CREATE OR REPLACE FUNCTION update_updated_column()
RETURNS TRIGGER AS '
BEGIN
NEW.updated = NOW();
RETURN NEW;
END;
' LANGUAGE 'plpgsql';
CREATE TRIGGER update_updated_modtime BEFORE UPDATE
ON posts FOR EACH ROW EXECUTE PROCEDURE
update_updated_column();
Reference
この問題について(データベース時間のデフォルト), 我々は、より多くの情報をここで見つけました https://velog.io/@sinf/Database-시간-기본-값テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol