SQL裡中儲存過程和觸發器,如何建立

2022-02-12 22:55:53 字數 4330 閱讀 7857

1樓:老秀珍城裳

儲存過程可以直接用sql語句建立,觸發器可以在表修改中建立create

procedure

nameas

2樓:扶倫閎卿

(1).儲存過程:

create

procedure

for_select(你想用的觸發器名字)delare

@name

char(8)

output(用於輸出的),@age

intoutput(用於輸出),@phone_numchar(11)

(輸入)

asselect

@name=name(列名),@age=age(列名)from

table_name(表名)

where

phone_num(列名)=@phone_num(2)觸發器

create

tigger

for_update

ontable_name

after

update

asif(update(phone_num))update

table_name2

setphone_num=i.phone_numfrom

deleted

d,inserted

iwhere

table_name.phone_num=d.phone_numend其中:

deleted與inserted是sql中預設的臨時表。用來儲存原來的值和插入的值。本觸發器的作用是

當更新table_name

中的phone_num時table_name1中的phone_num也一起更新!注意觸發器只能用於update.insert.

delete.select中不能用於建立表............

sql裡中儲存過程和觸發器,如何建立? 20

3樓:

觸發器是一種特殊的儲存過程,

2.觸發器是在對錶進行插入、更新或刪除操作時自動執行的儲存過程

3.觸發器通常用於強制業務規則

4.觸發器是一種高階約束,可以定義比用check 約束更為複雜的約束

5.可執行復雜的sql語句(if/while/case)

delete 觸發器

insert 觸發器

update 觸發器

/*----------insert 插入 觸發器------------*/

create trigger tri_insert

on students /*針對某個表,觸發器是建立在表關係上的*/

for insert /*採用的是哪種觸發器*/

asdeclare @stu_id int;

declare @stu_score varchar(200);

select @stu_id=s_id from inserted /*這裡的inserted 是在建立觸發器時候 系統自動建立的記憶體表*/

insert into student_score(s_id,ss_score)values(@stu_id,'100')

go--就是插一條資料進入students中,tri_insert觸發器就會自動在student_score插入相關的學生的一條分數的資料

insert into students(s_name,s_classid) values('黃馳',6)

select * from student_score

4樓:匿名使用者

mysql教程4 mysql8運算子、函式、儲存過程及新增資料型別 17.之建立帶有in和out引數的儲存過程 學習猿地

5樓:貳兩毛尖

如果是mssql server,在企業管理器裡,右鍵表名,然後自己看

6樓:匿名使用者

儲存過程可以直接用sql語句建立,觸發器可以在表修改中建立

create procedure nameas

7樓:薛實

(1).儲存過程:

create procedure for_select(你想用的觸發器名字)

delare @name char(8) output(用於輸出的),@age int output(用於輸出),@phone_num char(11) (輸入)

asselect @name=name(列名),@age=age(列名) from table_name(表名)

where phone_num(列名)=@phone_num

(2)觸發器

create tigger for_update

on table_name

after update

asif(update(phone_num))

update table_name2

set phone_num=i.phone_num

from deleted d,inserted i

where table_name.phone_num=d.phone_num

end其中:deleted與inserted是sql中預設的臨時表。用來儲存原來的值和插入的值。

本觸發器的作用是 當更新table_name 中的phone_num時table_name1中的phone_num也一起更新!注意觸發器只能用於update.insert.

delete.select中不能用於建立表............

sql中儲存過程與觸發器的區別?

8樓:匿名使用者

儲存過程相當於一個函式,需要自己呼叫,觸發器是自動執行不需要呼叫

9樓:貊梓毓博明

我的理解就是儲存過程就是把很多語句放在一起,然後按先後順序執行,這樣可以方便,並且一目瞭然。而觸發器就是指當你要操作一個表或者是其它操作的時候,會是這個觸發器開始執行,它幫助你執行一些輔助的工作,比如更新另一個表資料或者插入新表資料等。應該說這兩個我感覺根本就是不同的

10樓:匿名使用者

儲存過程與觸發器是sql server 中的兩類資料庫物件。它們都是由t-sql語句編寫而成的過程,所不同的是儲存過程是由使用者根據需要呼叫執行的,而觸發器則是由某個動作(如刪除或修改一條記錄)引發執行的。另外,儲存過程可以不依附於一個特定的表。

它們與函式也不同,函式可以直接通過函式名返回數值,其返回值可以直接在表示式中使用,而儲存過程與觸發器則不能直接通過其名稱帶回返回值,也不能直接在表示式中使用!

sql怎麼在儲存過程中建立觸發器

11樓:匿名使用者

--一些基本語法,詳細的請參考聯機幫助

--建立作業

declare @dbname sysname,@jobname sysname,@date int,@time int

exec msdb..sp_add_job @job_name=@jobname,@delete_level=1

--建立作業步驟

declare @sql varchar(800)

select @sql='insert into .....' ,@dbname=db_name()

--建立排程

exec msdb..sp_add_jobschedule @job_name = @jobname,

@name = '時間安排',

@enabled = 1,

@freq_type = 1,

@active_start_date = @date,

@active_start_time = @time

-- 新增目標伺服器

exec msdb.dbo.sp_add_jobserver

@job_name = @jobname ,

@server_name = n'(local)'

goexec msdb..sp_add_jobstep @job_name=@jobname,

@step_name = '更新處理步驟',

@subsystem = 'tsql',

@database_name=@dbname,

@command = @sql,

@retry_attempts = 5, --重試次數

@retry_interval = 5 --重試間隔

.......

sql sever可以通過編寫一個儲存過程或者函式來建立觸發器嗎?如果可以的話,該怎樣實現?

關於sql語言儲存過程和觸發器的建立 180

sql儲存過程如何呼叫儲存過程,SQL儲存過程如何呼叫儲存過程?

1 首先先建立一個儲存過程,如圖,儲存過程主要的功能是為表jingyan插入新的資料。2 執行這幾行 看到執行成功,資料庫裡現在已經有儲存過程sp jy。3 先看下jingyan表裡目前的陣列,如圖,只有三行資料。4 在mysql裡,呼叫儲存過程,只需要用call關鍵字,帶上儲存過程的名稱就行了,當...

用SQL語句建立儲存過程,使用SQL語句建立儲存過程如題 謝謝了

create proc edure procedure name number varying default output n with forreplication as begin t sql語句 end 可以參考以上語法!mysql教程4 mysql8運算子 函式 儲存過程及新增資料型別 1...

儲存過程返回值,求大師,SQL 取儲存過程的返回值

不用return 如果是sqlserver呼叫。declare r int exec pro add new 其他引數,re r output select r sql 取儲存過程的返回值 儲存過程應該有返回值的,問題應該出現在你vb6的呼叫語句中 第二個引數是輸出型別的引數,是否有正確設定 你可以...