当插入值的时候不论原表中有没有此数据都插不进去
--在sql server 2000中运行的
create table lkn
(
bookid int,
auther char(20),
bookname char(20),
bdate char(20),
state char(10)
)
if exists(select name from sysobjects where name='l')
drop trigger l --检查数据库中是否存在此名字的触发器
create trigger l
on lkn
for insert
as
begin
declare @book int
select @book=bookid from inserted
if exists(select bookid from lkn where bookid=@book)
print '已存在此书号,输入错误!!!'
rollback
end
--在sql server 2000中运行的
create table lkn
(
bookid int,
auther char(20),
bookname char(20),
bdate char(20),
state char(10)
)
if exists(select name from sysobjects where name='l')
drop trigger l --检查数据库中是否存在此名字的触发器
create trigger l
on lkn
for insert
as
begin
declare @book int
select @book=bookid from inserted
if exists(select bookid from lkn where bookid=@book)
print '已存在此书号,输入错误!!!'
rollback
end
drop trigger l --检查数据库中是否存在此名字的触发器
create trigger l
on lkn
for insert
as
begin
if exists(select 1 from lkn a,inserted i where a.bookid=i.bookid)
begin
RAISERROR('已存在此书号,输入错误!!!,16,1)
rollback
end
end
go
if exists(select name from sysobjects where name='l')
drop trigger l --检查数据库中是否存在此名字的触发器
create trigger l
on lkn
for insert
as
begin
if exists(select 1 from lkn a,inserted i where a.bookid=i.bookid)
begin
RAISERROR('已存在此书号,输入错误!!!',16,1)
rollback
end
end
go
不,懂;帮,顶;学,习;赚,分。
虽然这么回贴可能会被删除。
谁他妈的删除了就是个王八蛋。
强烈抗议CSDN这种即当婊子又想立贞洁牌坊的恶劣行为!!!
有本事,就封杀我!!!理由在这里:
他妈的一帮管理员有神经病啊???
http://topic.csdn.net/u/20110422/10/1a381057-7a7b-41d9-8969-ad1f5b77f24a.html?38665
我就插入了一条记录,是表中原来没有的,运行后结果如下(还是不正确啊,麻烦再解答一下吧,我用的是sql server 2000):
(所影响的行数为 1 行)
(所影响的行数为 1 行)
(所影响的行数为 7 行)服务器: 消息 50000,级别 16,状态 1,过程 l,行 8
已存在此书号,输入错误!!!
drop trigger l --检查数据库中是否存在此名字的触发器
create trigger l
on lkn
instead of insert
as
begin
if exists(select 1 from lkn a,inserted i where a.bookid=i.bookid)
begin
RAISERROR('已存在此书号,输入错误!!!',16,1)
rollback
end
else
begin
insert lkn select * from inserted
end
end
go
把if exists(select bookid from lkn where bookid=@book)改为if exists(select bookid from lkn where bookid=@book)就可以使bookid=1的元组插不进去,这是为什么啊?谢谢了啊
for insert 和 instead of insert 的区别用for的话是插入以后再判断(插入以后当然就存在了),用instead of是在插入前判断
在if exists(select 1 from lkn a,inserted i where a.bookid=i.bookid)里面,select 1的l是干什么用的啊,l并不是表里的属性啊?
有满足条件的记录时,条件为真,否则为假
这只是用来判断有没有的
insert into lkn
values(25,'dsf','dsafa','20010204','未借')
不好意思,看错,以为是 select * into 表名 from tbinsert into 表名 values(属性值,属性值) 一条语句只能插入一条记录
insert into 表名 select * from tb 可以一次插入多条记录
只不过insert lkn select * from inserted可以在两个表结构完全一样的表中导数据,不用写values()里面的一大串,省时省力