Ich mache ein Event-System. Nehmen wir an, am 12. September 2022 findet eine Veranstaltung namens ?Go Dance“ statt.
Wenn ein Ereignis zur Datenbank hinzugefügt wird, erstellen wir einen Unix-Zeitstempel in einer der Zeilen. Wir verwenden dazu die Standardeinstellung unix_timestamp()
Dieser Zeitstempel (z. B. 654213987) wird als Teil der URL verwendet, damit sich Personen für die Veranstaltung 654213987 registrieren k?nnen. Hier kann man sich zum Beispiel registrieren. http://myevents/signup/654213987
Der Veranstalter hat die Veranstaltungsbeschreibung am 12. September 2022 verfasst.
Der Veranstalter m?chte n?chstes Jahr die gleiche Veranstaltung veranstalten, m?chte aber die Beschreibung nicht umschreiben. Kopieren oder klonen Sie einfach die Originaldatei, ohne sie zu l?schen.
Dies l?sst sich leicht programmgesteuert in PHP durchführen, aber ich verwende XCRUD und kann es nicht ?ndern, sodass meine einzigen Optionen darin bestehen, Trigger oder einen fest verdrahteten Teil von MYSQL zu verwenden.
Wenn XCRUD eine Kopie erstellt, verwendet es ein normales INSERT, das die Originalkopie abzüglich der Masterkopie enth?lt.
Wenn ich die Spalte eindeutig mache, ist das Klonen nicht m?glich. Wenn nicht, wird der Zeitstempel kopiert.
Ist es m?glich, einen Ausl?ser (oder einen anderen Mechanismus) zu erstellen, um zu erkennen, dass ein Duplikat vorhanden ist, und das Duplikat durch einen anderen neuen Zeitstempel zu ersetzen?
Ich habe bei Stackoverflow gesehen, dass man mithilfe von Triggern Zeitstempel hinzufügen kann, aber ich wei? einfach nicht, wie ich das machen soll, um Duplikate zu vermeiden.
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 |