求大神帮助,关于SQL触发器的一个问题~~~
sqlserver吧
全部回复
仅看楼主
level 2
乱舞_深秋 楼主
我建立的是一个关于选座系统的表,要实现的是当“选座”表里插入一条选座的数据时,对应的“座位”表里的入座数+1,以下是我写的代码:
create trigger [dbo].[座位变化_入座]
on [dbo].[选座]
for insert
as
begin
update dbo.座位
set 入座数=入座数+1
where 座位.座位编号 in
(
select 座位.座位编号
from dbo.座位,dbo.选座
where 座位.座位编号=选座.座位编号
)
end;
以这个代码创建触发器的时候,运行之后系统没有报错。然后对于“选座”表第一遍插入数据时,“座位”表没有反应,第二次插入数据时,整个“座位”表里所有的入座数全部都+1了,不只是选中的那个座位编号对应的入座数。
下面是创建两个表的代码:
CREATE TABLE [dbo].[选座](
[座位编号] [varchar](50) NOT NULL,
[用户名] [nvarchar](50) NOT NULL,
[入座时间] [smalldatetime] NULL,
[离座时间] [smalldatetime] NULL,
[在座时间] AS ([离座时间]-[入座时间]),
CONSTRAINT [PK_选座] PRIMARY KEY CLUSTERED
(
[座位编号] ASC,
[用户名] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[座位](
[座位编号] [varchar](50) NOT NULL,
[可容纳总量] [int] NOT NULL,
[入座数] [int] NOT NULL,
[预约数] [int] NOT NULL,
[是否满座] [nchar](10) NULL,
[已使用座位] AS ([入座数]+[预约数]),
CONSTRAINT [PK_座位] PRIMARY KEY CLUSTERED
(
[座位编号] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
感激不尽!!!
2016年06月20日 10点06分 1
level 2
乱舞_深秋 楼主
[乖][乖][乖]
2016年06月21日 06点06分 3
楼主 你这资源弱爆了 我在思必达学院 见过 好多教程和视频 零基础和加强版 都是免费下载 百度网盘里面资源 一键转存 你看这个 就知道什么叫做海量了
2016年06月23日 17点06分
level 10
for 换成after呢
2016年06月21日 16点06分 4
1