Dar*_*iss 0 sql t-sql sql-server triggers sql-server-2008
我的触发器问题如下.谢谢你的帮助.
CREATE TRIGGER upper_case ON osoba
AFTER INSERT AS
BEGIN
DECLARE @imie VARCHAR(25)
DECLARE @new_imie VARCHAR(25)
DECLARE my_cursor CURSOR FAST_FORWARD FOR SELECT imie FROM INSERTED
OPEN my_cursor
FETCH NEXT FROM my_cursor INTO @imie
WHILE @@FETCH_STATUS = 0
BEGIN
@new_imie = UPPER(SUBSTRING(@imie, 1, 1)) + SUBSTRING(@imie, 2,LEN(@imie))
END
UPDATE osoba
SET imie = @new_imie WHERE imie = @imie
END
Run Code Online (Sandbox Code Playgroud)
错误消息:
消息102,级别15,状态1,过程upper_case,行13
'@ new_imie'附近的语法不正确.
消息102,级别15,状态1,过程upper_case,行17'END
'附近的语法不正确.
不要使用光标.
您可以使用UPDATE一次性影响所有行的语句,而不是逐个处理它们.
CREATE TRIGGER upper_case
ON osoba
AFTER INSERT
AS
BEGIN
UPDATE O
SET imie = UPPER(SUBSTRING(I.imie, 1, 1)) + SUBSTRING(I.imie, 2, LEN(I.imie))
FROM INSERTED I
JOIN osoba O
ON I.imie = O.imie
END
Run Code Online (Sandbox Code Playgroud)