我想通过update-function填充sql-table并选择表达式中的列,如下所示:
update marks set (select name from students where id='1')='AAA'
where subject='math';
简单解释一下。 我想在触发器中使用一个表达式来使用SET运算符按值创建关系表值。
table students:
id name
1 Max
2 Joe
3 Jim
table marks:
subject Max Joe Jim
math AAA B C
sport NULL NULL A
在我的例子中,一个phyton脚本逐行填充表'temps',传感器读数为'SensorID'和'Timestamp'。查找表'sensors'可以根据每个'SensorID'告诉'SensorName'。现在,触发器将自动填充数据透视表'T1Table',其时间戳为零秒substr(new.timestamp,1,17)||'00'
。
timestamp T1 T2 T3
2015-01-01 12:35:00 23.5 22.3 NULL
源代码如下所示:
CREATE TRIGGER insert_T1 AFTER INSERT ON temps
BEGIN
INSERT OR IGNORE INTO T1Table(TimeStamp) VALUES(substr(new.timestamp,1,17)||'00');
UPDATE T1Table SET (select sensorName from sensors where sensors.sensorID=new.sensorID)=
ROUND(new.temperature,1)
WHERE TimeStamp=substr(new.timestamp,1,17)||'00';
END;
不幸的是它不能正常工作,这是错误信息
Error: near "(": syntax error
似乎SET运算符需要硬编码条目。 https://www.sqlite.org/lang_update.html