sql 可不可以设置这样的命令(一条就能解决) ?

来源:百度知道 编辑:UC知道 时间:2024/09/24 03:50:21
在表students 中如果已有学生jack 就更新让分数:mark 为100
如果没有就插入。

这个应该添加一个instead of触发器
假设学生姓名字段是stuname
create trigger tg_students_insert
on students
instead of insert
as
if exists(select * from students ,inserted where students.stuname=inserted.stuname)
begin
update students
set mark=100
from inserted
end
else
begin
insert into students
select *
from inserted
end

执行上边的创建语句以后,在向表中插入数据时候会判断插入的学生姓名在表中是否存在,如果不存在就插入,如果存在就更新分数为100.
另外你说的名字为jack不知道是不是举例。如果只想更新jack的,那就在exists语句里加上名字为jack的条件
if exists(select * from students ,inserted where students.stuname=inserted.stuname where inserted.stuname='jack')

这样一条语句就可以了
update students
set mark=100
where name='jack';

先建立下面的存储过程,这样在前台就可以这样一句实现。
exec student_insert 'jack',100
go

create procedure
@sutdent varchar(30),
@mark int
as
update student set mark=@mark where student=@student
if @@rowcount=0
ins