【发布时间】:2015-08-18 16:13:49
【问题描述】:
我正在尝试编写一个触发器来在插入完成时更新同一个表中的列
我的桌子是
create table BlueTooth (
ID int Primary Key NOT NULL ,
version varchar(45) NOT NULL,
score float null,
speed float
);
我的触发器是
create or replace trigger BlueToothsc
ON BlueTooth
after insert
as
begin
update BlueTooth set score((select speed from inserted)/(select max(speed) from BlueTooth ) * 100)
END
GO
但我在第一行的 "incorrect syntax near" "or" 关键字中遇到错误
和"incorrect syntax near" "as"
有人可以帮我解决这个问题
我想通过 (inserted speed / max(speed) ) * 100) 更新 BlueTooth 表 score 列
当一个更快的蓝牙版本出现时,分值应该是 100 并且所有其他的应该分别得到一个较低的值。
【问题讨论】:
-
如果
score总是正确的,这肯定会更好地在视图中计算,而不是存储在表中。 IE。如果第一个插入的速度为1,然后另一个插入的速度为100,那么两个分数都是100。这真的是你想要的吗? -
@Damien_The_Unbeliever 你是对的,当我运行触发器时它只会更改插入的行,你的例子是正确的,这不是我真正想要的。如果更快的蓝牙版本来了,我想更新所有的分值你有什么建议吗?
标签: sql sql-server triggers insertion