寻求帮助将此 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
ON TF_WATCHLIST_PERSISTENCE
AFTER INSERT, UPDATE
AS
DECLARE @MyCursor CURSOR;
DECLARE @MyField_USER varchar(250);
DECLARE @MyField_ID varchar(250);
DECLARE @MyField_NewPos int
BEGIN
SET @MyCursor = CURSOR FOR
SELECT WATCHLIST_USER
, WATCHLIST_ID
FROM inserted
WHERE inserted.WATCHLIST_POSITION is null
OPEN @MyCursor
FETCH NEXT FROM @MyCursor
INTO @MyField_USER, @MyField_ID
WHILE @@FETCH_STATUS = 0
BEGIN
set @MyField_NewPos = (SELECT MAX(WATCHLIST_POSITION) + 1 FROM TF_WATCHLIST_PERSISTENCE WHERE WATCHLIST_USER = @MyField_USER)
print @MyField_NewPos
update TF_WATCHLIST_PERSISTENCE
SET WATCHLIST_POSITION = ISNULL(@MyField_NewPos,0)
WHERE WATCHLIST_USER = @MyField_USER
AND WATCHLIST_ID = @MyField_ID
AND WATCHLIST_POSITION IS NULL
Print @MyField_USER
Print @MyField_ID
FETCH NEXT FROM @MyCursor
INTO @MyField_USER, @MyField_ID
END;
END;
CLOSE @MyCursor
关于mysql - 将 mySQL 触发器转换为 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46783018/