Share via

Need Trigger ,On Insert Record?

Analyst_SQL 3,576 Reputation points
2021-07-24T06:09:13.573+00:00

I need trigger on insert record ,that when i insert record into table #tbl_GRN_M, then at the base of col (GRN_Qty) qty ,that rows get insert into table #tbl_GRN_D.

Create table #tbl_GRN_M  (GRN_ID int,Level_Five_ID int,GRN_Qty int)
Create table #tbl_GRN_D  (GRN_D_ID int,GRN_ID int)


Insert into #tbl_GRN_M (GRN_ID,Level_Five_ID,GRN_Qty) values (101,111,6)
Insert into #tbl_GRN_D (GRN_D_ID,GRN_ID) values (1001,101)
Insert into #tbl_GRN_D (GRN_D_ID,GRN_ID) values (1002,101)
Insert into #tbl_GRN_D (GRN_D_ID,GRN_ID) values (1003,101)
Insert into #tbl_GRN_D (GRN_D_ID,GRN_ID) values (1004,101)
Insert into #tbl_GRN_D (GRN_D_ID,GRN_ID) values (1005,101)
Insert into #tbl_GRN_D (GRN_D_ID,GRN_ID) values (1006,101)
Developer technologies | Transact-SQL
Developer technologies | Transact-SQL

A Microsoft extension to the ANSI SQL language that includes procedural programming, local variables, and various support functions.

SQL Server | Other
SQL Server | Other

Additional SQL Server features and topics not covered by specific categories


Answer accepted by question author

EchoLiu-MSFT 14,626 Reputation points
2021-07-27T01:51:38.207+00:00

Please check:

Create table tbl_GRN_M  (GRN_ID int,Level_Five_ID int,GRN_Qty int)  
Create table tbl_GRN_D  (GRN_D_ID int,GRN_ID int,GRN_Qty int)  
  
CREATE TRIGGER inserttbl_GRN_M  
ON tbl_GRN_M  
FOR INSERT   
AS  
BEGIN  
 DECLARE @num int  
 SET @num=1  
 WHILE @num<=(SELECT GRN_Qty FROM inserted i WHERE GRN_ID=i.GRN_ID)    
 BEGIN   
   INSERT INTO tbl_GRN_D(GRN_ID,GRN_Qty)  
   SELECT GRN_ID,@num  
   FROM inserted i     
   WHERE GRN_ID=i.GRN_ID  
   SET @num=@num+1  
  END  
END  
  
Insert into tbl_GRN_M (GRN_ID,Level_Five_ID,GRN_Qty) values (101,111,6)    
Insert into tbl_GRN_M (GRN_ID,Level_Five_ID,GRN_Qty) values (102,111,3)    
  
SELECT * FROM  tbl_GRN_M   
SELECT * FROM tbl_GRN_D  
  
DROP TRIGGER inserttbl_GRN_M  
DROP TABLE tbl_GRN_D  
DROP TABLE tbl_GRN_M   

Output:
118029-image.png

If you have any question, please feel free to let me know.

Regards
Echo


If the answer is helpful, please click "Accept Answer" and upvote it.

Was this answer helpful?

0 comments No comments

3 additional answers

Sort by: Most helpful
  1. Guoxiong 8,221 Reputation points
    2021-07-26T14:07:38.473+00:00

    Try this:

    CREATE TABLE dbo.tbl_GRN_M (
        GRN_ID int,
        Level_Five_ID int,
        GRN_Qty int
    );
    
    CREATE TABLE dbo.tbl_GRN_D (
        GRN_D_ID int IDENTITY(1, 1),
        GRN_ID int
    );
    GO
    
    CREATE TRIGGER TI_tbl_GRN_M ON dbo.tbl_GRN_M 
    FOR INSERT 
    AS
    BEGIN
        DECLARE @i int;
        DECLARE @GRN_ID int;
    
        SELECT @GRN_ID = GRN_ID, @i = GRN_Qty
        FROM inserted;
    
        ;WITH CTE AS (
            SELECT 1 AS i
            UNION ALL
            SELECT i + 1 AS i
            FROM CTE 
            WHERE i < @i
        )
    
        INSERT INTO dbo.tbl_GRN_D (GRN_ID)
        SELECT @GRN_ID
        FROM inserted AS i, CTE AS c;
    END
    GO
    
    INSERT INTO dbo.tbl_GRN_M VALUES (101, 111, 6);
    GO
    
    SELECT * FROM dbo.tbl_GRN_M;
    SELECT * FROM dbo.tbl_GRN_D;
    GO
    

    Was this answer helpful?

    0 comments No comments

  2. EchoLiu-MSFT 14,626 Reputation points
    2021-07-26T02:11:32.397+00:00

    Hi @Analyst_SQL ,

     Create table tbl_GRN_M  (GRN_ID int,Level_Five_ID int,GRN_Qty int)  
     Create table tbl_GRN_D  (GRN_D_ID int,GRN_ID int)  
      
     CREATE TRIGGER insertEmployees  
     ON tbl_GRN_M  
     FOR INSERT   
     AS  
     BEGIN  
     INSERT INTO tbl_GRN_D(GRN_ID)  
     SELECT GRN_ID  
     FROM inserted i  
     WHERE GRN_ID=i.GRN_ID  
     END  
      
     DROP TRIGGER insertEmployees  
    

    Regards
    Echo


    If the answer is helpful, please click "Accept Answer" and upvote it.

    Was this answer helpful?


  3. Erland Sommarskog 134.7K Reputation points MVP Volunteer Moderator
    2021-07-24T08:30:37.45+00:00

    If so, you need to work with a table of numbers of some sort. I have an short article on my web site there you can learn about this concept:
    https://www.sommarskog.se/Short%20Stories/table-of-numbers.html

    Was this answer helpful?


Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.