none
Error en consulta "La subconsulta ha devuelto más de un valor RRS feed

  • Pregunta

  • tengo la siguiente consulta 

    if OBJECT_ID('replicacion2') is not null
    begin 
    drop trigger replicacion2
    end
    go

    create trigger replicacion2
    on ALUMNO
    after insert
    as
    if (select carrera from ALUMNO)='sistemas'
    begin
    insert [192.168.0.13].ESCUELA.dbo.ALUMNO select * from inserted 
    end
    else  
    insert ESCUELA select * from inserted
    go

    al hacer el insert

    INSERT INTO ALUMNO VALUES (13090878,'IVAN SOLORZANO','SEPTIMO','SISTEMAS');

    La subconsulta ha devuelto más de un valor, lo que no es correcto cuando va a continuación de =, !=, <, <=, >, >= o cuando se utiliza como expresión.

    jueves, 15 de diciembre de 2016 23:56

Respuestas

  • Max Solorzano,

    ¿La sub-consulta refiere al registro o registros insertados?, de ser así puedes cambiar por lo siguiente:

    IF OBJECT_ID(N'replicacion2', N'TR') IS NOT NULL
        DROP TRIGGER replicacion2
    GO
    CREATE TRIGGER dbo.replicacion2
        ON dbo.ALUMNO
        AFTER INSERT
    AS
    BEGIN
        BEGIN TRANSACTION
        BEGIN TRY
    	   INSERT INTO [192.168.0.13].ESCUELA.dbo.ALUMNO 
    	   SELECT * FROM inserted i
    	   WHERE (i.carrera = 'sistemas');
    
    	   INSERT INTO dbo.ESCUELA
    	   SELECT * FROM inserted i
    	   WHERE (i.carrera <> 'sistemas');
        END TRY
        BEGIN CATCH
    	   SELECT ERROR_MESSAGE();
    
    	   IF @@TRANCOUNT > 0
    		  ROLLBACK TRANSACTION;
        END CATCH
    
        IF @@TRANCOUNT > 0
    	   COMMIT TRANSACTION;
    END
    GO


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    viernes, 16 de diciembre de 2016 3:21