welcome to 's blog...


公告

我的分类(专题)

日志更新

最新评论

留言板

链接

搜索


Blog信息




TRigger and function
aku1 发表于 2008-6-3 11:14:30

use pubs
go

if object_id('tb1') is not null

   drop table tb1;

go

Create table tb1 (E_id Nchar(5) primary key,Name Nvarchar(12));
GO

if object_id('tirg1') is not  null

    drop trigger trig1

go

Create trigger trig1 on tb1

for insert

as

 if (select count(e_id) from inserted

             where name =N'张春良')>1
 begin

     print 'the data integrity problem'
     delete tb1 where name=N'张春良'

end;

Go

Create trigger trig2 on tb1

  after update

 As
   if (select count(E_id) from inserted

       where  name=N'张春良')>0

begin

    print 'the data integrity problem'

    update tb1 set tb1.name=deleted.name
    from deleted
    where tb1.name='张春良' and
          tb1.E_id=deleted.E_id
end;

go


insert into tb1 select 1,'herry'

union all select 2,'Jimmy'

union all select 3,'Arthur'
union all select 4,'张春良'


update tb1
set name='张春良'
    from tb1
    where e_id=1

go


if object_id('trig3') is not null

    drop trigger trig3

go

create trigger trig3 on tb1

instead of insert

as
  
   print 'Add the Record'
   insert tb1 select * from inserted
go

insert into tb1 select 5,'Eddie'

union all select 6,'Rivers'

union all select 7,'Leo'
union all select 8,'Annie'

 

 

使用 POWER 和 EXP 指数函数

POWER 函数返回所给数字表达式值的指定次幂的值。POWER(2,3) 返回 2 的 3 次幂,即 8。可以指定负数幂次,所以 POWER(2.000, -3) 返回 0.125。请注意,POWER(2, -3) 的结果是 0,这是因为返回的结果与所给数字表达式的数据类型相同。因此,如果结果有三位小数,则计算其所给幂次的数字必须也有三位小数。

EXP 函数返回所给 float 表达式的以科学计数法表示的指数值。所以,对于值 198.1938327,EXP 函数返回的值为 1.18710159597953e+086。

SELECT EXP(198.1938327)

比较 CHARINDEX 和 PATINDEX

CHARINDEX 和 PATINDEX 函数都返回指定模式的开始位置。PATINDEX 可使用通配符,而 CHARINDEX 不可以。

这两个函数都带有两个参数:

  • 希望获取其位置的模式。使用 PATINDEX,模式是可以包含通配符的字面字符串。使用 CHARINDEX,模式是字面字符串(不能包含通配符)。

  • 字符串值表达式(通常为列名),Microsoft® SQL Server™ 在其中搜索指定的模式。

例如,查找模式"wonderful"在 titles 表中 notes 列的某一特定行中的开始位置。

USE pubs

SELECT CHARINDEX('wonderful', notes)

FROM titles

WHERE title_id = 'TC3218'

下面是结果集:

----------------

46

(1 row(s) affected)

如果未限制搜索的行,查询将返回表中的所有行,并对在其中查找到该模式的所有行报告非零值,对其它行报告零值。

例如,使用通配符查找模式"candies"在 Categories 表中的 Description 列的任一行中的开始位置:

USE Northwind
GO
SELECT CategoryID, PATINDEX('%candies%', Description)AS POSITION
FROM Categories
WHERE PATINDEX('%candies%', Description) <> 0

如果没有限制要搜索的行,查询将返回表中的所有行,对在其中找到该模式的所有行报告非零值。

PATINDEX 对 text 数据类型很有用;除 IS NULL、IS NOT NULL 和 LIKE(这些是 WHERE 子句中对 text 类型有效的仅有的其它比较运算)外,PATINDEX 也可用于 WHERE 子句中。


阅读全文 | 回复(0) | 引用通告 | 编辑


发表评论:

    昵称:
    密码: (游客无须输入密码)
    主页:
    标题:



Powered by Oblog.