
CREATE TABLE foobar(
id SMALLINT UNSIGNED NOT NULL PRIMARY KEY,
no_alpha VARCHAR(6) NOT NULL,
some_alpha VARCHAR(6) NOT NULL,
all_alpha VARCHAR(6) NOT NULL
);-- -- 创建表数据插入前的触发器
CREATE TRIGGER check_valid_i BEFORE INSERT ON foobar FOR EACH ROW
BEGIN
DECLARE all_alpha, no_alpha, not_all_alpha, not_no_alpha INT;
SET not_all_alpha = 0, not_no_alpha = 0;
IF NOT (NEW.all_alpha REGEXP '^[A-Za-z]+$') THEN SET not_all_alpha = 1;
END IF;
IF NOT (NEW.no_alpha REGEXP '^[^A-Za-z]+$') THEN SET not_no_alpha = 1;
END IF;
IF not_all_alpha = 1 AND not_no_alpha = 1 THEN
SELECT CONCAT('Can not INSERT this, because ', NEW.all_alpha, ' is invalid'),
CONCAT('Can not INSERT this, because ', NEW.no_alpha, ' is invalid')
INTO all_alpha, no_alpha FROM information_schema.tables;
END IF;
IF not_all_alpha = 1 THEN
SELECT CONCAT('Can not INSERT this, because ', NEW.all_alpha, ' is invalid')
INTO all_alpha FROM information_schema.tables;
END IF;
IF not_no_alpha = 1 THEN
SELECT CONCAT('Can not INSERT this, because ', NEW.no_alpha, ' is invalid')
INTO not_no_alpha FROM information_schema.tables;
END IF;
END;
-- 创建表数据更新前的触发器
CREATE TRIGGER check_valid_u BEFORE UPDATE ON foobar FOR EACH ROW
BEGIN
DECLARE all_alpha, no_alpha, not_all_alpha, not_no_alpha INT;
SET not_all_alpha = 0, not_no_alpha = 0;
IF NOT (NEW.all_alpha REGEXP '^[A-Za-z]+$') THEN SET not_all_alpha = 1;
END IF;
IF NOT (NEW.no_alpha REGEXP '^[^A-Za-z]+$') THEN SET not_no_alpha = 1;
END IF;
IF not_all_alpha = 1 AND not_no_alpha = 1 THEN
SELECT CONCAT('Can not UPDATE this, because ', NEW.all_alpha, ' is invalid'),
CONCAT('Can not UPDATE this, because ', NEW.no_alpha, ' is invalid')
INTO all_alpha, no_alpha FROM information_schema.tables;
END IF;
IF not_all_alpha = 1 THEN
SELECT CONCAT('Can not UPDATE this, because ', NEW.all_alpha, ' is invalid')
INTO all_alpha FROM information_schema.tables;
END IF;
IF not_no_alpha = 1 THEN
SELECT CONCAT('Can not UPDATE this, because ', NEW.no_alpha, ' is invalid')
INTO not_no_alpha FROM information_schema.tables;
END IF;
END; INSERT INTO foobar (id, no_alpha, some_alpha, all_alpha) VALUES (1, '1231@@', 'ab13ba', 'bbbbbb');
INSERT INTO foobar (id, no_alpha, some_alpha, all_alpha) VALUES (2, 'ab13ba', 'ab13ba', 'aaaaaa');
INSERT INTO foobar (id, no_alpha, some_alpha, all_alpha) VALUES (2, '123132', 'ab13ba', 'aaaaaa');
INSERT INTO foobar (id, no_alpha, some_alpha, all_alpha) VALUES (3, '123132', 'ab13ba', 'a23aaa');
INSERT INTO foobar (id, no_alpha, some_alpha, all_alpha) VALUES (3, '123132', 'ab13ba', 'aweaaa');

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。