在SQL server中,用C語言,設定觸發器

時間 2022-02-10 01:55:03

1樓:匿名使用者

只要在sql server中直接新增一個觸發器就可以了

**如下:

create trigger myty

on 表名

for insert,update

asif exists(select 1 from inserted where inserted.數值》100 or inserted.數值<30)

--/*

--上一句要不要都行,新增個判斷是提供執行效率

--*/

update 表名 set 數值=100

where exists(

select 1 from inserted

where (inserted.數值》100 or inserted.數值<30) and

inserted.主鍵=表名.主鍵

) /*

--主鍵說明:

--主鍵一般是編號,表示該行資料在該表中的唯一的標識.如:[銷售單表(銷售時間,商品編號)]兩個加一起才是主鍵

--應該寫成:

inserted.銷售時間=銷售單表.銷售時間 and inserted.商品編號=銷售單表.商品編號*/

2樓:

create trigger test_name on table1for insert

asdeclare @ss int

select @ss=column_nameif @ss>100 or @ss<30

begin

update table1

set column_name=100

from tbale,inserted

where table1.column_name=inserted.column_name

endreturn

raiserror('s',16,1,@ss)rollback transaction

我無意中弄出來的,剛好想起來,試了下是可以的當插入的值大於100或者小於30

值自動改為100

3樓:匿名使用者

這個在sql server上建立觸發器就可以了

update和insert的

4樓:匿名使用者

是在什麼情況觸發呢?插入資料還是?可以在資料庫裡直接寫觸發器,或者在前臺(c#)插入的時候檢測是否符合條件執行

如何在c#中使用帶有 觸發器 的sql語句

5樓:仙戈雅

就跟呼叫普通的t-sql語句沒有區別,因為觸發器的業務邏輯是附加在表物件裡執行的,即在資料庫內部執行的),c#作為上一層介面,無需關心基表的觸發器究竟是如何執行的。真正關心的應該是dba,或是程式設計者。

6樓:匿名使用者

觸發器的定義:

觸發器是一種特殊型別的儲存過程。觸發器主要是通過事件進行觸發被自動呼叫執行的。而儲存過程可以通過儲存過程的名稱被呼叫。

觸發器存在的意義就在於他可以「自動」的執行,而不需要操作者去關注。

比如有表a和表b , 我們希望a中新增、刪除、修改某一行的時候,表b中對應的行跟著a一起變, 這時候就會用到觸發器。

但是觸發器一旦寫好之後,就會儲存在sqlserver上, 每次我們去操作表a, 觸發器自己就會工作(去更新表b)。不需要任何其他的操作。

所以,你把觸發器寫好之後,只需要關注自己的sql語句就可以了,不用去呼叫它,

需要我們主動呼叫的是儲存過程,相當於sql server中的函式,ado.net提供了介面,

(如有一個trans 名字是@mytran)

呼叫的時候

sqlcommand cmd = new sqlcommand(sql, conn);

//把command執行型別改為儲存過程方式,預設為text。

cmd.commandtype = commandtype.storedprocedure;

然後cmd.excutenoquery 或者excutesclar 等等操作 ,和普通sql語句是一樣的。

sql server 中如何建立觸發器

7樓:文件類共創空間

建立觸發器的語法:

create trigger trigger_nameon table_name

[with encryption]

for [delete, insert, update]ast-sql語句

gowith encryption表示加密觸發器定義的sql文字delete, insert, update指定觸發器的型別insert觸發器的工作原理:

1.執行insert插入語句,在表中插入資料行;

2.觸發insert觸發器,向系統臨時表inserted表中插入新行的備份(副本)

3.觸發器檢查inserted表中插入的新行資料,確定是否需要回滾或執行其他操作。

8樓:

你可以直接用語句寫呀,如:

create trigger [trigger name] on [dbo].[table name]

for insert, update, deleteas或者你用sql server的企業管理器,選中要建立觸發器的表,點後鍵,然後選擇管理觸發器,這時會彈出一個編輯視窗,然後自己編寫觸發器就ok了。

c#呼叫sql2008觸發器

9樓:匿名使用者

你這個需求有點奇怪.

因為 觸發器 是當資料庫的表, 有 插入\更新\刪除 處理的時候, 才會執行的.

例如一個 進貨的表,每插入一行資料,觸發器去 更新 庫存表, 作 庫存增加。

一個 銷售的表,每插入一行資料,觸發器去 更新 庫存表, 作 庫存減少。

觸發器**執行的時候, 要獲取 當前 插入/刪除 表的資訊的。

例如你 插入了一行 名稱 蘋果, 數量 100個的 進貨 資料。

那麼 觸發器那裡, 通過 獲取 特有的屬性, 知道本次 插入的是 100 個 蘋果

然後去 update 庫存 set 數量 = 數量+100 where 名稱 = 蘋果。

假如 你要 c# 去直接呼叫觸發器的話, 這個沒法處理的。

間接呼叫的話, 就是簡單 插入/更新/刪除 有觸發器的表, 來實現 間接的呼叫觸發器。

10樓:候採杉

呼叫表一樣!略微差別!

我想寫一個sql server 觸發器 ,功能是實現插入一條資料前修改這條資料

11樓:

不能在插入前處理,只能插入以後進行更新

create trigger tg_insnewvalue on [dbo].[table]

for insert

asupdate table

set table.column = newcolumnvaluefrom table, inserted iwhere table.主鍵 = i.主鍵

12樓:匿名使用者

create trigger beforeinsertteston test_trigger_tablefor insert

asdeclare

@id int, -- 表主關鍵字@name varchar(10); -- 那個要修改的欄位begin

print('before insert');

select @id = id, @name = name from inserted;

print('new name = ' + @name);

update

test_trigger_table

setname = replace(@name , '提議', '')where

id=@id;

end;go

13樓:匿名使用者

可以用instead of insert 觸發器create trigger [dbo].[觸發器名] on [dbo].[表名]

instead of insert

begin

insert [dbo].[表名]( 欄位列表)select 欄位列表(含欄位處理,如case 欄位a=1 then 1 else 0 end) from insertedend

14樓:寂寞的夫子

這觸發器使用得有點浪費,類似字串處理明顯可以在程式裡很簡單的解決的,畢竟觸發器也耗系統資源的!

15樓:匿名使用者

那就寫啊,沒有必要來這裡告訴大家。

怎麼建立一個觸發器,在c#裡怎麼呼叫出發器

16樓:_凍結

開啟sqlserver管理器,右鍵表,可以找到建立觸發器的選項,

沒有聽說觸發器可以呼叫的,觸發器是在你新增,修改,刪除表記錄操作時,自動呼叫的,

17樓:匿名使用者

觸發器不能呼叫的。。

建立觸發器的sql語法

delimiter |

create trigger ``.``

< [ before | after ] > < [ insert | update | delete ] >

on for each row

begin

--do something

end |

樓主提問前應該去學習下。。什麼是觸發器

c#誰能給我寫個資料庫的觸發器的示例

18樓:匿名使用者

觸發器是資料庫的功能,在資料庫定義了觸發器後,只需要有insert,update或者delete資料,就可以觸發和c#沒什麼關係

--sqlserver觸發器例子-----------create trigger 觸發器名字

on 表名

for insert, update, delete ---可以單獨for insert等

asprint '成功觸發'

c語言中在函式中用static修飾的變數還能給

隆隆 樓主 可是c語言中說 有時希望函式中的區域性變數的值在函式呼叫結束後不消失而保留原值,這時就應該指定區域性變數為 靜態區域性變數 用關鍵字static進行宣告。所謂的結束後不消失保留原值是指當前函式結束後該static變數所佔的記憶體不釋放。函式內一般定義的變數 auto 變數 在函式執行結束...

c語言scanf無法輸入值,關於C語言中用scanf函式如何輸入資料的問題

樂跑小子 scanf 是c語言標準庫中的輸入函式,宣告包含在stdio.h檔案中,因此要使用該函式,必須載入 include標頭檔案。當執行到scanf函式時,程式就暫停等待使用者輸入,該函式只接受變數的地址,格式為 變數名。是一個阻塞式的函式,等使用者輸入完畢後,則將值賦值給變數,至此函式呼叫完畢...

請問在微控制器C語言程式設計中,用delay延遲的話,1秒程式是什麼?微控制器晶振為12MHZ

一條指令需要由12個振盪週期 既晶振振盪週期 組成,即晶振頻率12分頻,也就是執行一條指令的最高頻率1mhz,則對應週期為1us。延時程式執行一次迴圈的時間為1us,則延遲1s需要迴圈1000 1000次。所以你這樣寫是做不到延遲1s的,可以讓a 1000,再第二個for迴圈1000次。 這個還得跟...