我建立的是一个关于选座系统的表,要实现的是当“选座”表里插入一条选座的数据时,对应的“座位”表里的入座数+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]
感激不尽!!!
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]
感激不尽!!!