使用觸發器在插入時產生Unix時間戳,同時允許複製現有記錄並避免重複
P粉947296325
P粉947296325 2024-01-10 17:51:06
0
1
389

我正在製作一個事件系統。 假設有一個活動是 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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板