Gunakan pencetus untuk menjana cap masa Unix pada sisipan sambil membenarkan pengklonan rekod sedia ada dan mengelakkan pertindihan
P粉947296325
P粉947296325 2024-01-10 17:51:06
0
1
361

Saya sedang membuat sistem acara. Katakan ada acara yang dipanggil "Go Dance" pada 12 September 2022.

Apabila acara ditambahkan pada pangkalan data, kami mencipta cap waktu unix pada salah satu baris. Kami menggunakan unix_timestamp() lalai untuk melakukan ini

Cap masa ini (cth. 654213987) digunakan sebagai sebahagian daripada URL supaya orang ramai boleh mendaftar untuk acara 654213987. Sebagai contoh, orang ramai boleh mendaftar di sini. http://myevents/signup/654213987

Penganjur acara menulis penerangan acara pada 12 September 2022.

Penganjur acara ingin menganjurkan acara yang sama tahun depan tetapi tidak mahu menulis semula penerangan. Hanya salin atau klon fail asal tanpa memadamkannya.

Ini mudah dilakukan secara pengaturcaraan dalam PHP, tetapi saya menggunakan XCRUD dan saya tidak boleh mengubah suainya, jadi satu-satunya pilihan saya ialah menggunakan pencetus atau sebahagian daripada MYSQL berwayar keras.

Apabila XCRUD membuat salinan, ia menggunakan INSERT biasa yang mengandungi salinan asal tolak salinan induk.

Jika saya membuat lajur unik, ia tidak membenarkan pengklonan. Jika tidak, ia menyalin cap masa.

Adakah mungkin untuk mencipta pencetus (atau mekanisme lain) untuk mengenali bahawa pendua wujud dan menggantikan pendua dengan cap masa baharu yang lain?

Saya melihat pada stackoverflow bahawa anda boleh menambah cap masa menggunakan pencetus, tetapi saya tidak tahu cara melakukannya untuk mengelakkan pertindihan.

P粉947296325
P粉947296325

membalas semua(1)
P粉057869348

Contoh.

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
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan