SQL触发器,无法绑定由多个部分组成的标识符

createprocproc_ticket_yuding@t_numchar(20)asupdateTicketsetT_Status='已售'whereT_Num=@t... create proc proc_ticket_yuding
@t_num char(20)
as
update Ticket set T_Status = '已售'
where T_Num = @t_num;
--将车票表(Ticket)中的当前销售状态由“未售”改成“已售”
create trigger tri_ticket_for_yuding
on ticket
for update
as
begin
update train set t_seating = t_seating-1
where ticket.t_id = train.t_id
end
--将列车表(Train)中座位数减一
这是数据库火车票系统,ticket是车票表,
Ticket(T_Num,T_Seat_Num,T_Price,T_Status,T_Type,T_Id)
Train是列车表
Train(T_Id,T_Start,T_Destination,T_Start_time,T_Arrival_time,T_After_time,T_Genre,T_Distance,T_Seating)
上面的存储过程和触发器是用来实现订票功能的,可触发器就报错。求大神指点指点!
展开
 我来答
17号观察室
2013-06-01 · TA获得超过5730个赞
知道大有可为答主
回答量:3666
采纳率:66%
帮助的人:1367万
展开全部
你这个不是报错的问题 你的触发器写的不对
你的主要思想就是当Ticket更新时 触发一个事件 使座位减1 你那样写有问题的

你告诉我 这个两个表是怎么关联的 我帮你改
create trigger tri_ticket_for_yuding
on ticket
for update
as
if exists (SELECT 1 FROM deleted ) and exists (SELECT 1 FROM inserted )
begin
update train set t_seating = t_seating-1
from train join deleted on deleted.T_Id=train.T_Id

join inserted on inserted.T_Id=train.T_Id
end
我估计这个两个表关联是通过T_Id 就这样帮你写了 如果关联条件不是 你改下就可以了
不懂再问
更多追问追答
追问
谢谢谢谢!我就是用T_Id关联Train和Ticket两张表的。
我想问问
from train join deleted on deleted.T_Id=train.T_Id
join inserted on inserted.T_Id=train.T_Id
这两句的意思。
追答
更新时 牵扯到deleted 和inserted 这两个表 这两个表只存在内存中 更新完成 这两个表自动消失

表结构和要操作的表一模一样
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式