add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(100),
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
CREATE TRIGGER tr_users_bi
BEFORE INSERT ON users
FOR EACH ROW
BEGIN
DECLARE allowed_created_at DATETIME;
DECLARE error_message_text VARCHAR(64);
SELECT MAX(created_at) + INTERVAL 12 HOUR INTO allowed_created_at
FROM users
WHERE username = NEW.username;
IF NEW.created_at < allowed_created_at THEN
SET error_message_text = CONCAT('Регистрация возможна не ранее ', allowed_created_at);
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = error_message_text;
END IF;
END
INSERT INTO users (username) VALUES ('Иванов'), ('Петров'), ('Сидоров');
SELECT * FROM users;
Records: 3  Duplicates: 0  Warnings: 0
id username created_at
1 Иванов 2024-01-30 12:12:08
2 Петров 2024-01-30 12:12:08
3 Сидоров 2024-01-30 12:12:08
-- Вставляем Иванова, указываем явно дату-время через 15 часов
INSERT INTO users (username, created_at) VALUES ('Иванов', CURRENT_TIMESTAMP + INTERVAL 15 HOUR);
SELECT * FROM users;
id username created_at
1 Иванов 2024-01-30 12:12:08
2 Петров 2024-01-30 12:12:08
3 Сидоров 2024-01-30 12:12:08
4 Иванов 2024-01-31 03:12:08
-- Вставляем Петрова, указываем явно дату-время через 9 часов
-- Генерируется сообщение об ошибке;
INSERT INTO users (username, created_at) VALUES ('Петров', CURRENT_TIMESTAMP + INTERVAL 9 HOUR);
Регистрация возможна не ранее 2024-01-31 00:12:08
-- Убеждаемся, что запись не вставлена
SELECT * FROM users;
id username created_at
1 Иванов 2024-01-30 12:12:08
2 Петров 2024-01-30 12:12:08
3 Сидоров 2024-01-30 12:12:08
4 Иванов 2024-01-31 03:12:08