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 和 PATINDEXCHARINDEX 和 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 子句中。
|