триггер в sql проблема - PullRequest
       15

триггер в sql проблема

1 голос
/ 19 марта 2011

это мой триггер

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 Ответ

3 голосов
/ 19 марта 2011

Вам нужно создать триггер в таблице для того места, где вы хотите, чтобы он срабатывал при вставке новой записи (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]

...