SQL 觸發器判斷始終為 false

發布 科技 2024-05-05
10個回答
  1. 匿名使用者2024-02-09

    在您的例子中,因為觸發器觸發時資料已經在表中,如果存在(從 name = @name 的人員中選擇名稱)。

    它一直存在。

    您可以嘗試將其修改為:

    declare @datacount int;

    select @datacount = count(*)from persons where name = @name;

    if @datacount > 1

  2. 匿名使用者2024-02-08

    對於預設值為 after 觸發器,因此應對其進行修改以建立觸發器語句,如下所示。

    create trigger [dbo].[mytrigger2] on [dbo].[persons] instead of insert as

  3. 匿名使用者2024-02-07

    在觸發器中。 有兩種方法可以確定哪些列已更改:

    第。 1. 可以使用update()函式,語法:update(列名純); 返回值。

    bool 值。 如果列已更新,則為 true,否則為 false。 此功能更加方便實用。

    第。 2. 使用 columns updated() 函式。 語法:columns updated ( 返回值:varbinary

    命令 1 前的爐渣最多包含八列的表。 您可以使用 columns updated() 函式來確定這一點。

    例如,如果要測試第一列是否已被修改,則可以使用 updated()&1=1 列來確定它是否已被修改。 如果為 true,則更新該列; 否則,它不會悔改鉛更新。

    要測試第五列,可以使用列 updated()&16=16。

    2.包含八列以上的表。 若要測試,請更新第一列,如果測試是第 11 列,則使用它,依此類推。

  4. 匿名使用者2024-02-06

    觸發器是後觸發的(相當於插入後),在插入資料後執行。

    也就是說,在將新資料插入到表中後,將執行觸發器內容,並且由於記錄已經在表中,因此存在檢測將始終返回 true。

    建議使用代替。 或者,如果有另乙個鍵值,則新增另乙個鍵值條件來確定(如果另乙個鍵值不同,則表示合同編號已經存在; 否則它仍然不存在)。

  5. 匿名使用者2024-02-05

    使用 for 關鍵字時,預設值為 after,這意味著觸發器在插入操作完成後執行。

    更改為 而不是

  6. 匿名使用者2024-02-04

    create trigger trteston test -- 在測試表中建立觸發器。

    for update -- 觸發事件的原因。

    as -- 觸發事件後要執行的操作。

    declare @a int

    set @a = select a from updatedif (@a=1)

    beginrollbackend

  7. 匿名使用者2024-02-03

    你表現得很普通。

    insert into reqdet values (.

    一次插入一行?

    或執行。 insert into reqdet select ..from ..

    一次插入多行?

    如果一次插入一行。

    在這裡,我想問一下如何確定 drawapplydet 表中是否已經存在 sysno='da'+right(@sreqno,10)+'0',先刪除這些記錄,然後再在下面插入記錄? */

    這很簡單,根本不需要額外的判斷。

    sysno='da'+right(@sreqno,10)+'0' ;

    如果滿足條件,自然會被刪除,如果不滿足條件,則刪除 0 行,相當於不刪除。

  8. 匿名使用者2024-02-02

    只需將此**複製到那裡即可。

    if exists(select 1 from rawapplydet where sysno='da'+right(@sreqno,10)+'0' )

    begindelete from rawapplydet where sysno='da'+right(@sreqno,10)+'0'end

  9. 匿名使用者2024-02-01

    觸發器插入、更新或刪除表時自動執行的特殊儲存過程不能應用於常規查詢。

  10. 匿名使用者2024-01-31

    這可以通過錯誤處理來完成,在執行 notfound 時呼叫錯誤處理程式以執行您需要的操作。

相關回答
13個回答2024-05-05

對於 sqlserver,您可以編寫乙個基於資料庫的觸發器,您可以在其中獲取要對其執行操作的表的名稱,並且 sqlserver 禁止使用者刪除指定的表。 >>>More

11個回答2024-05-05

在觸發器的已刪除表中,將儲存已刪除的行。 只需將其取出並插入另一張桌子即可。 >>>More

14個回答2024-05-05

create or replace trigger biud_scroe_a

before insert or update or deleteon scroe >>>More

10個回答2024-05-05

select top(1)* from table_name order by update_time desc

我的想法是按照修改時間的降序找到第一名的結果,不是嗎? >>>More

4個回答2024-05-05

具體步驟如下:

1. 首先建立乙個觸發器,需要在可新增表上建立乙個更新觸發器,如下圖所示,然後進入下一步。 >>>More