MySQL、Oracle的时间类型字段自动更新:insert插入、update更新时,自动更新时间戳。设置自增主键id,oracle创建自增id序列和触发器
在MySQL和Oracle中,你可以使用触发器来实现时间类型字段的自动更新。以下是针对MySQL和Oracle数据库的示例代码。
MySQL:
-- 创建表
CREATE TABLE example (
id INT PRIMARY KEY,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP
);
-- 创建更新时间戳的触发器
DELIMITER $$
CREATE TRIGGER before_update_example
BEFORE UPDATE ON example
FOR EACH ROW
BEGIN
SET NEW.updated_at = CURRENT_TIMESTAMP;
END$$
DELIMITER ;
-- 测试更新
UPDATE example SET id = 1 WHERE id = 1;
Oracle:
-- 创建表
CREATE TABLE example (
id NUMBER PRIMARY KEY,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP
);
-- 创建序列
CREATE SEQUENCE example_seq;
-- 创建触发器
CREATE OR REPLACE TRIGGER example_before_update
BEFORE UPDATE ON example
FOR EACH ROW
BEGIN
:NEW.updated_at := CURRENT_TIMESTAMP;
END;
/
-- 测试更新
UPDATE example SET id = 1 WHERE id = 1;
在这些示例中,我们创建了一个名为example
的表,其中包含两个时间类型字段created_at
和updated_at
。在MySQL中,我们使用了BEFORE UPDATE
触发器来自动更新updated_at
字段。在Oracle中,我们使用了类似的机制,但是使用了序列和触发器来完成相同的任务。在更新操作发生之前,触发器会自动将updated_at
字段设置为当前时间戳。
评论已关闭