【发布时间】:2018-03-28 17:23:20
【问题描述】:
寻求帮助将此 mySQL 触发器转换为 TSQL。
CREATE TRIGGER IF not exists TF_WATCHLIST_PERSISTENCE_ADD_POSITION
AFTER INSERT ON TF_WATCHLIST_PERSISTENCE
FOR EACH ROW
WHEN NEW.WATCHLIST_POSITION IS NULL
BEGIN
UPDATE TF_WATCHLIST_PERSISTENCE SET
WATCHLIST_POSITION = (SELECT COUNT(*) - 1 FROM TF_WATCHLIST_PERSISTENCE WHERE WATCHLIST_USER = NEW.WATCHLIST_USER)
WHERE rowid = NEW.rowid;
END;
【问题讨论】:
-
试试这个:
CREATE TRIGGER TF_WATCHLIST_PERSISTENCE_ADD_POSITION AFTER INSERT ON TF_WATCHLIST_PERSISTENCE BEGIN UPDATE TF_WATCHLIST_PERSISTENCE SET WATCHLIST_POSITION = (SELECT COUNT(*) - 1 FROM TF_WATCHLIST_PERSISTENCE WHERE WATCHLIST_USER = inserted.WATCHLIST_USER) WHERE rowid = inserted.rowid and inserted.WATCHLIST_POSITION is null -
谢谢...但是我的 Management Studio 不接受该语法。如果我更好地重写它.WATCHLIST_POSITION 为 null 但是它需要一个“AS,NOT_FOR,With”
-
你在使用 ssms 吗?
-
我正在使用 Microsoft SQL Server Management Studio (2014)
-
@SimonBruun 这个触发器应该做什么?可能有一个 function 已经这样做了,而不需要触发器。 MySQL 没有窗口、分析或排名函数。 SQL Server 有一个 lot -
ROW_NUMBER(), RANK(), LAG(),LEAD(),可以应用于所有数据或部分数据。看起来你只需要一个排名功能?
标签: mysql sql-server tsql