INSERT INSERT SELECT MIN(COUNT)后插入ID

时间:2015-12-15 01:23:17

标签: sql-server

我试图在eventss表上插入后创建触发器。触发器应从Bcoordinator_ID表中选择bookingCoordinator eventss表中具有最小出现次数的minCount

这是我的表格数据,后跟触发器。它不喜欢值中的DROP TABLE eventsBooking CREATE TABLE eventsBooking ( EBK INT NOT NULL IDENTITY(100, 1), booking_ID AS 'EBK'+CAST( ebk as varchar(10)) PERSISTED PRIMARY KEY, bookingDate DATE, Bcoordinator_ID VARCHAR (20), eventss_ID VARCHAR (20) NOT NULL ) INSERT INTO eventsBooking VALUES ('2015-01-07 11:23:00', NULL, 'EVT100'); ,我认为它正在寻找和int。

Eventss

EVT INT NOT NULL IDENTITY(100, 1), eventss_ID AS 'EVT' + CAST(evt as varchar(10)) PERSISTED PRIMARY KEY, eventsName varchar(50), noOfStages SMALLINT, noOfRounds SMALLINT, eventsDate DATE, entryFee DECIMAL (7,2), venue_ID VARCHAR (20) NOT NULL, judges_ID VARCHAR (20) INSERT INTO eventss VALUES ('Swimming Gala 2015', '3', '7', '2015-01-07 09:00:00', '35.00', 'VEN101', 'JUD100'); CREATE TABLE bookingCoordinator ( BCO INT NOT NULL IDENTITY(100, 1), Bcoordinator_ID AS 'BCO'+CAST( bco as varchar(10)) PERSISTED PRIMARY KEY, forename varchar(20) NOT NULL, familyName varchar(50) ) INSERT INTO bookingCoordinator VALUES ('Steve', 'Wills'); 表:

CREATE TRIGGER TRGinsertJudge 
ON  [dbo].[eventss]
AFTER INSERT 
AS 
BEGIN
   SET NOCOUNT ON;

   INSERT INTO dbo.eventsBooking (Bcoordinator_ID, bookingDate, Eventss_ID)             
   VALUES(minCount, getdate(), 100)

   SELECT MIN(COUNT(Bcoordinator_ID)) AS minCount
   FROM eventsBooking
END

触发:

<div>

1 个答案:

答案 0 :(得分:0)

您无法对汇总进行聚合,即MIN(COUNT(1))

如果您只想在eventsBooking中使用最少计数的Bcoordinatior_ID,请执行此操作

select top 1 bcoordinator_id 
from eventsBooking 
group by bcoordinator_id 
order by count(1) asc

你不能在INSERT INTO ... SELECT语句中使用VALUES()

此外,在您当前的代码中,由于eventsBooking.bcoordinator_id始终为null,您需要加入到bookingCoordinators的实际表中以返回预订协调员,而不会预订任何事件。

所以你的完整触发器声明应该是

    INSERT INTO dbo.eventsBooking (Bcoordinator_ID, bookingDate, Eventss_ID)                
     select 
 top 1
  bookingcoordinator.bcoordinator_id, getdate(), 100 
    from bookingCoordinator left join eventsBooking 
        on bookingCoordinator.Bcoordinator_ID = eventsBooking.Bcoordinator_ID
    group by bookingcoordinator.bcoordinator_id 
    order by count(1) asc