求SQL语句,触发器的一些操作

(1)将S表的PRIMARYKEY完整性约束删除,编写一个S表上的触发器来完成在S表上插入记录时实现如下目标:SNO不能为空,且SNO不能重复。(2)在C表修改记录时,若... (1) 将S表的PRIMARY KEY完整性约束删除,编写一个S表上的触发器来完成在S表上插入记录时实现如下目标:SNO 不能为空,且SNO不能重复。
(2) 在C表修改记录时,若修改的是CREDIT字段,则修改值超过6时提示出错信息并不将结果写入数据表。
展开
 我来答
擦擦木木
2011-06-01
知道答主
回答量:8
采纳率:0%
帮助的人:0
展开全部
(1)
alter atble S
drop constraints 完整性约束名
go
create trigger pksno on s for insert
as
declare @sno varchar(10)
select @sno=sno from inserted
if @sno is null
begin
print 'SNO不能为空'
rollback
end
if @sno in (select sno from s)
begin
print 'sno不可重复'
rollback
end
(2)
create trigger uc on c for update
as
declare @credit int
select @credit=credit from inserted
if @credit>6
begin
print '该项数据不能大于6'
rollback
end
这个是在SQL2000上实现的
sun_siliang
2011-05-31 · TA获得超过2.6万个赞
知道大有可为答主
回答量:9913
采纳率:100%
帮助的人:4515万
展开全部
(1)
alter atble S
drop constraints 完整性约束名
go
create trigger s_insert
on s after insert
as
if exists(select sno from inserted where sno in (select sno from s))|| exists(select sno from inserted where sno is null)

(2)
create trigger c_update
on c after update
as
if exists(select * from inserted where CREDIT>6)
begin
print 'CREDIT is error!'
rollback transaction
end
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
你好师姐
2011-05-31 · TA获得超过123个赞
知道小有建树答主
回答量:177
采纳率:0%
帮助的人:138万
展开全部
先建一个用户提示信息 ,后面触发器可以调用
sp_addmessage 50001,16,N'%1s',us_english
(1)
create trigger tr_s_insert on s
for insert
as
declare @li_ret int
select @li_ret = COUNT(*) from inserted a,s b where a.sno =b.sno

if (@li_ret >1 or exists (select 1 from inserted where sno is null or sno ='' ) )
begin
raiserror(50001,16,1,'sno有重复、为空格或为空!')
ROLLBACK TRANSACTION
end
go
------------------------------------------------------------------------------------------------
(2)
create trigger tr_c_up on c
for update
as
if exists(select * from inserted where credit>6)
begin
raiserror(50001,16,1,'credit 最大允许值为6!')
rollback transaction
end
------------------------------------------------------------------------------------------------
以上语句在SQL2005以上测试通过
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
沙漠之冰love
2011-06-01
知道答主
回答量:21
采纳率:0%
帮助的人:0
展开全部
(1)执行alter table S drop constraints 完整性约束名;
将S表的SNO 设置为主键就行了。如果不设为主键,就要看你的要求了,比如说SNO是个自增1的序号。你可以先查询出表里面的最大序号,再插入。
(2)C表的CREDIT字段也是数字的吗?如果是的话,可以在保存时做相应的判断。
之前的回答都可以采纳,关键还是要把问题说清楚。数据库一定要把字段类型,字段值的规律和你的要求写清楚,其实问题不难。
补充:前面的答案最好有;号结束。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式