触发sql问题

时间:2011-03-19 19:28:45

标签: sql sql-server sql-server-2005 triggers

这是我的触发器

ALTER trigger [dbo].[addpay]
on [dbo].[pays]
after insert
as
declare @idtutor int
set @idtutor =(select idtutor from inserted)
begin 
insert into pays (idtutor,nopay,datex,paythismonth)values (@idtutor,600,GETDATE(),'no')
end

但是在插入导师后它没有添加新的付款...我不看任何错误,错误,为什么它不起作用

我的桌子

create table Tutor
(
[IdTutor] int primary key identity not null,
[Nombre] varchar(150) not null,
[ApellidoPaterno] varchar (150) not null,
[ApellidoMaterno] varchar (150) not null, 
[EstadoCivil] varchar (10) not null,
[FechaNacimiento] varchar(50),
[Municipio] varchar(150) not null,
[Estado] varchar(150) not null,
[Direccion] varchar(250) not null,
[Sexo] varchar (9) not null,
[TelefonoTutor] char(10) not null,
[CelularTutor] char(15) not null,
[EmailTutor] char(50) not null,
[Empresa] varchar(150) not null,
[Ocupacion] varchar(250) not null,
[DireccionEmpresa] varchar (250) not null,
[TelefonoEmpresa] char(10) not null,
[CelularEmpresa] char(15) not null,
[EmailEmpresa] varchar(50) not null
)



create table pays
(
idpay int primary key not null identity,
idtutor int not null,
nopay float,
datex datetime,
paythismonth varchar(2)
)

1 个答案:

答案 0 :(得分:3)

您需要在表格上创建触发器,以便在插入新记录时将其触发(在此情况下为Tutor)。

此外,您需要记住插入/更新语句可能会影响多行,因此分配标量变量将不起作用。您需要的触发器是

CREATE TRIGGER YourTrigger
ON [dbo].[Tutor]
AFTER INSERT
AS
  BEGIN
      SET NOCOUNT ON

      INSERT INTO pays
                  (idtutor,
                   nopay,
                   datex,
                   paythismonth)
      SELECT idtutor,
             600,
             GETDATE(),
             'no'
      FROM   inserted
  END  

您还需要使用DROP TRIGGER [dbo].[addpay]

删除问题中的其他触发器