我是做 HIS的 工具是 DELPHI7 + SQLSERVER2000 我在药品入库表里写的触发器 目的是 在有新药品写到入库表里时自动调整相应药品的库存数量  没保存前的数据我存在一个临时表里 用户点保存按钮后 我再一次性插入到入库表里 可是 测试时发现 如果临时表里只有一条记录 那没什么问题  可如果临时表里要是超过一条记录 那数据库只对最后一条临时记录进行触发。请大家帮忙看看  我是不是哪里写的有问题啊。。 
结构如下:
库存表: DEOPT_XY_YK(NUMBER, PRONO, NUM, PRICE, SALES, PRODATE, USEDATE, PROVIDER);
入库表:KF_ENTERDEPOT(BILL, NUMBER, PRONO, NUM, PRICE, SALES, PRODATE, USEDATE, PROVIDER, REGISTER);
临时表:TEMP_KF(BILL, NUMBER, PRONO, NUM, PRICE, SALES, PRODATE, USEDATE);入库表的触发器:
CREATE  TRIGGER  ENTERDEPOT  ON  dbo.KF_EnterDepot 
FOR  INSERT
AS
  DECLARE  @NUMBER   CHAR(7)
  DECLARE  @PRONO    VARCHAR(20)
  DECLARE  @NUM      INT
  DECLARE  @PRICE    MONEY
  DECLARE  @SALES    MONEY
  DECLARE  @PRODATE  CHAR(10)
  DECLARE  @USEDATE  CHAR(10)
  DECLARE  @PROVIDER VARCHAR(30)
/*****************************************************************************************************************************************************************************/
  SELECT @NUMBER = NUMBER, @PRONO = PRONO, @NUM = NUM, @PRICE = PRICE, @SALES = SALES, @PRODATE = PRODATE,    @USEDATE = USEDATE, @PROVIDER = PROVIDER FROM INSERTED
/*****************************************************************************************************************************************************************************/
  SELECT * FROM DEPOT_XY_YK WHERE NUMBER = @NUMBER AND PRONO = @PRONO AND PRICE = @PRICE AND SALES = @SALES
  IF @@ROWCOUNT = 0 
     INSERT INTO DEPOT_XY_YK(NUMBER, PRONO, NUM, PRICE, SALES, PRODATE, USEDATE, PROVIDER) VALUES (@NUMBER, @PRONO, @NUM, @PRICE, @SALES, @PRODATE, @USEDATE, @PROVIDER)
  ELSE
     UPDATE DEPOT_XY_YK SET NUM = NUM + @NUM WHERE NUMBER = @NUMBER AND PRONO = @PRONO AND PRICE = @PRICE  AND SALES = @SALES
/*****************************************************************************************************************************************************************************/存储过程:
CREATE PROCEDURE P_KF_SUBMIT_ENTERDEPOT 
@BILL             CHAR(15),
@PROVIDER  VARCHAR(30),
@REGISTER   VARCHAR(10)
AS
/*#################################################################################################*/
BEGIN  TRANSACTION  MY_ENTERDEPOTSUBMIT
/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/INSERT INTO KF_ENTERDEPOT(BILL, NUMBER, PRONO, NUM, PRICE, SALES, PRODATE, USEDATE, PROVIDER, REGISTER)
            SELECT @BILL, NUMBER, PRONO, NUM, PRICE, SALES, PRODATE, USEDATE, @PROVIDER, @REGISTER  
                   FROM TEMP_KF  
                        WHERE BILL = @BILLDELETE TEMP_KF WHERE BILL = @BILL/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
IF @@ERROR = 0 COMMIT TRANSACTION MY_ENTERDEPOTSUBMIT ELSE ROLLBACK TRANSACTION MY_ENTERDEPOTSUBMIT
GO