我有两个表,其中一个名为att,如下所示
CREATE TABLE att (
SID varchar(50) NOT NULL,
CID varchar(50) NOT NULL,
Date date NOT NULL,
H1 varchar(1) NOT NULL DEFAULT 0,
H2 varchar(1) NOT NULL DEFAULT 0,
H3 varchar(1) NOT NULL DEFAULT 0,
H4 varchar(1) NOT NULL DEFAULT 0,
H5 varchar(1) NOT NULL DEFAULT 0,
H6 varchar(1) NOT NULL DEFAULT 0,
H7 varchar(1) NOT NULL DEFAULT 0,
H8 varchar(1) NOT NULL DEFAULT 0,
H9 varchar(1) NOT NULL DEFAULT 0,
H10 varchar(1) NOT NULL DEFAULT 0,
INDEX (SID, CID)
);
另一个表是以下字段:
SID CID Per
如何为以下内容编写触发器:
如果在att表上的h1-h0的任何字段中发生更新
使用以下值更新每个表中的每列:
((1的总数 – 0的总数)/(1的总数不是0的总数))/ 100
提前致谢
我开发了一个触发器,但它没有工作,它在第11行说错误,你能说出什么问题?
create TRIGGER `att_up` AFTER UPDATE ON `attentance`
FOR EACH ROW BEGIN
DECLARE Zeros INT;
DECLARE Ones INT;
DECLARE total INT;
DECLARE atted FLOAT;
SELECT SUM(8-(h1+h2+h3+h4+h5+h6+h7+h8))
INTO Zeros FROM attentance
WHERE StudID=NEW.StudID;
SELECT SUM(h1+h2+h3+h4+h5+h6+h7+h8)
INTO Ones FROM attentance
WHERE StudID=NEW.StudID;
SELECT SUM(8-(h1+h2+h3+h4+h5+h6+h7+h8))+ SUM(h1+h2+h3+h4+h5+h6+h7+h8)
INTO total FROM attentance
WHERE StudID=NEW.StudID;
set atted=((ZEROS-Ones)/total)/100;
INSERT into per(per) values (atted);
END$$