SQL 触发器语句错误 求助

来源:百度知道 编辑:UC知道 时间:2024/06/05 00:46:47
做了一个数据库的触发器,但是在sql2000上运行出错,不知道错在哪里。。。对sql2000的语法不熟,谢谢大家!触发器如下:

create trigger overdraft_trigger on account
for update
as
if inserted.balance < 0
begin
insert into borrower
(select customer_name,account_number
from depositor, inserted
where inserted.account_number = depositor.account_number)
insert into loan values
(inserted.account_number, inserted.branch_name,– inserted.balance)
update account set balance = 0
from account, inserted
where account.account_number = inserted.account_number
end

希望能给出解决方案,最好能有详细的讲解。
正确答案:
create trigger overdraft_trigger on account
for update
as
if (select balance from inserted) < 0
begin
insert into loan
select inserted.account_number,inserted.branch_name, -inserted.balance from inserted
insert into borrower
select customer_name,insert

错误不少,看看是不是楼主的要的效果

create trigger overdraft_trigger on account
for update
as
--if inserted.balance < 0 --这里要改改
if exists(select 1 from inserted where balance<0)
begin
insert into borrower(customer_name,account_number)--指定列名
--( --括号不用
select d.customer_name,i.account_number --指定显示的表名
from depositor d, inserted i--指定一个别名使代码简洁
where i.account_number = d.account_number
--)
insert into loan select account_number, branch_name from inserted--这里改改
update account
set balance = 0
from account, inserted
where account.account_number = inserted.account_number
end

if inserted.balance < 0
balance 是你的字段吗?不能这样用
create trigger overdraft_trigger on account
for update
as

insert into borrower
(select customer_name,account_number
from depositor, inserted
where inserted.account_number = depositor.account_number and inserted.balance<0)