我正在製作一個事件系統。 假設有一個活動是 2022 年 9 月 12 日的「去跳舞」。
當一個事件被加入到資料庫中時,我們會在其中一行上建立一個 unix 時間戳記。 我們使用預設值 unix_timestamp() 來執行此操作
此時間戳記(例如 654213987)用作網址的一部分,以便人們可以註冊活動 654213987。 例如,人們可以在這裡註冊。 http://myevents/signup/654213987
活動組織者於 2022 年 9 月 12 日撰寫了活動說明。
明年活動主辦單位希望舉辦同樣的活動,但不想重寫指示。只需複製或克隆原始文件,而不刪除原始文件。
這很容易用 PHP 以程式設計方式完成,但我使用的是 XCRUD,我無法修改它,所以我唯一的選擇是使用觸發器或 MYSQL 的某些硬連線部分。
當 XCRUD 製作副本時,它使用普通的 INSERT,其中包含原始副本減去主副本。
如果我使列唯一,則它不允許克隆。 如果不是,它會複製時間戳。
是否可以建立一個觸發器(或其他機制)來識別存在重複項並用另一個新時間戳替換重複項?
我在 stackoverflow 上看到可以使用觸發器添加時間戳,但我只是不知道如何執行此操作以避免重複。
P粉0578693482024-01-11 13:58:13
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 |