用mysql创建两个表用户表包括username varchar64password varchar64 contactable bit1contacts int;联系人表包括username varchar64contact varchar64username和contact作为联合主键username和contact都参考用户表的username更新和删除时执行同样的操作;再用mysql创建一
如果更新成功,就输出一条成功提示信息。
用户表创建代码:
CREATE TABLE users ( username varchar(64) PRIMARY KEY, password varchar(64), contactable bit(1), contacts int );
联系人表创建代码:
CREATE TABLE contacts ( username varchar(64), contact varchar(64), PRIMARY KEY (username, contact), FOREIGN KEY (username) REFERENCES users(username) ON UPDATE CASCADE ON DELETE CASCADE, FOREIGN KEY (contact) REFERENCES users(username) ON UPDATE CASCADE ON DELETE CASCADE );
触发器1代码:
CREATE TRIGGER insert_contact BEFORE INSERT ON contacts FOR EACH ROW BEGIN DECLARE contactable_value bit; SELECT contactable INTO contactable_value FROM users WHERE username = NEW.contact; IF contactable_value = 0 THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Contact is not contactable'; END IF; END;
触发器2代码:
CREATE TRIGGER update_contacts AFTER INSERT ON contacts FOR EACH ROW BEGIN UPDATE users SET contacts = contacts + 1 WHERE username = NEW.username OR username = NEW.contact; IF ROW_COUNT() > 0 THEN SELECT 'Contacts updated successfully'; END IF; END;
原文地址: https://www.cveoy.top/t/topic/bplj 著作权归作者所有。请勿转载和采集!