簡體   English   中英

SQL Server:插入觸發器

[英]SQL Server : Insert trigger

我下面的觸發器有問題。 謝謝你的幫助。

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

錯誤信息:

消息102,級別15,狀態1,過程大寫,第13行
“ @new_imie”附近的語法不正確。
消息102,級別15,狀態1,過程大寫,第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 

分配@new_imiemsdn )時應使用SET

SET @new_imie = UPPER(SUBSTRING(@imie, 1, 1)) + SUBSTRING(@imie, 2,LEN(@imie));

您對@new_imie的分配需要在其前面加上SET關鍵字...

   SET @new_imie = UPPER(SUBSTRING(@imie, 1, 1)) + SUBSTRING(@imie, 2,LEN(@imie))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM