使用触发器在插入时生成Unix时间戳,同时允许克隆现有记录并避免重复
P粉947296325
P粉947296325 2024-01-10 17:51:06
0
1
340

我正在制作一个事件系统。 假设有一个活动是 2022 年 9 月 12 日的“去跳舞”。

当一个事件被添加到数据库中时,我们会在其中一行上创建一个 unix 时间戳。 我们使用默认值 unix_timestamp() 来执行此操作

此时间戳(例如 654213987)用作网址的一部分,以便人们可以注册活动 654213987。 例如,人们可以在这里注册。 http://myevents/signup/654213987

活动组织者于 2022 年 9 月 12 日撰写了活动说明。

明年活动组织者希望举办同样的活动,但不想重写说明。只需复制或克隆原始文件,而不删除原始文件。

这很容易用 PHP 以编程方式完成,但我使用的是 XCRUD,我无法修改它,所以我唯一的选择是使用触发器或 MYSQL 的某些硬连线部分。

当 XCRUD 制作副本时,它使用普通的 INSERT,其中包含原始副本减去主副本。

如果我使列唯一,则它不允许克隆。 如果不是,它会复制时间戳。

是否可以创建一个触发器(或其他机制)来识别存在重复项并用另一个新时间戳替换重复项?

我在 stackoverflow 上看到可以使用触发器添加时间戳,但我只是不知道如何执行此操作以避免重复。

P粉947296325
P粉947296325

全部回复(1)
P粉057869348

示例。

CREATE TABLE test (id INT, ts DATE);
CREATE TRIGGER tr_bi_test_add_1_week
BEFORE INSERT ON test
FOR EACH ROW
BEGIN
    WHILE EXISTS ( SELECT NULL
                   FROM test
                   WHERE ts = NEW.ts ) DO
        SET NEW.ts = NEW.ts + INTERVAL 1 WEEK;
    END WHILE;
END
INSERT INTO test VALUES (1, '2022-01-01'); 
-- inserted as-is
SELECT * FROM test;
id ts
1 2022-01-01
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!