2011年1月15日 星期六

觸發設計

假設聯繫人表中只有3個字段:
LinkManId:聯繫人編號,該字段為自動增長的。
LinkManName:聯繫人姓名。
LinkManNameLetter:聯繫人姓名對應的拼音字母。

那麼,可以使用以下語句來創建一個觸發器:



CREATE TRIGGER LinkMan_Insert --觸發器名為LinkMan_Insert

ON LinkMan --觸發器作用在LinkMan

AFTER INSERT --在插入數據之後觸發該觸發器

AS

BEGIN

--姓名變量

declare @LinkManName varchar(50)

--姓名的拼音

declare @LinkManName_spell varchar(50)

--臨時使用的變量

declare @tempStr varchar(10)

--用於循環計數的變量

declare @id int



--在插入的記錄中查詢聯繫的人姓名

select @LinkManName = LinkManName from inserted

--如果姓名為空,則把變量設為空字符串

if @LinkManName is null

set @LinkManName = ''



--初始化計數器

set @id = 1

--初始化姓名的拼音變量

set @LinkManName_spell = ''

--通過循環獲得姓名中的每一個字符

while @id <= LEN(@LinkManName)

begin

--從letter表中查到字符所對應的第一個拼音字母

select top 1 @tempStr = spell_simple from letter where letter = SUBSTRING(@LinkManName,@id,1)

--將拼音字母賦值給姓名的拼音變量

set @LinkManName_spell = @LinkManName_spell + @tempStr

--計數器加一

set @id = @id + 1

end



--在插入的記錄中添加字母字段的內容

update LinkMan set LinkManNameLetter = @LinkManName_spell

where LinkManId = @@IDENTITY



END

GO

沒有留言:

張貼留言