Create Table tbl_BinaryTree_Nodes ( Nodes_IN_PK_Code Int Identity(1,1) Constraint PK_Nodes Primary Key, Nodes_IN_FK_ParentCode Int Constraint FK_Nodes_To_Nodes References tbl_BinaryTree_Nodes (Nodes_IN_PK_Code ), Nodes_CH_xx_Position Char(1) Not Null Constraint CH_Nodes_Position Check (Nodes_CH_xx_Position = 'L' OR Nodes_CH_xx_Position = 'R'), Nodes_VC_xx_NodeData Varchar(50) ) GO Create Table tbl_BinaryTree_Hierarchy ( Hiera_IN_PK_Code Int Identity(1,1) Constraint PK_Hiera Primary Key, Hiera_IN_FK_ParentCode Int Constraint FK_Hiera_Nodes_Parent References tbl_BinaryTree_Nodes(Nodes_IN_PK_Code ), Hiera_IN_FK_ChildCode Int Constraint FK_Hiera_Nodes_Child References tbl_BinaryTree_Nodes(Nodes_IN_PK_Code ), Hiera_CH_xx_Position Char(1) Not Null Constraint CH_Hiera_Position Check (Hiera_CH_xx_Position = 'L' OR Hiera_CH_xx_Position = 'R'), Hiera_IN_xx_NodeLevel int ) GO Create Trigger trg_BinaryTree_Nodes_ADD On tbl_BinaryTree_Nodes For Insert AS Begin IF (@@RowCount=1) Begin Insert Into tbl_BinaryTree_Hierarchy (Hiera_IN_FK_ParentCode, Hiera_IN_FK_ChildCode, Hiera_CH_xx_Position, Hiera_IN_xx_NodeLevel) Select (Case When Hiera_IN_FK_ParentCode Is Null Then Hiera_IN_FK_ChildCode Else Hiera_IN_FK_ParentCode End), (Select Nodes_IN_PK_Code From Inserted), (Case When Hiera_IN_FK_ParentCode Is Null Then (Select Nodes_CH_xx_Position From Inserted) Else Hiera_CH_xx_Position End) , (Hiera_IN_xx_NodeLevel + 1 ) From tbl_BinaryTree_Hierarchy Where Hiera_IN_FK_ChildCode = (Select Nodes_IN_FK_ParentCode From Inserted) Union ALL Select NULL , Nodes_IN_PK_Code , Nodes_CH_xx_Position , 1 From Inserted End Else Begin RaisError ('Multiple Insertion Not Handled in Trigger to update tbl_BinaryTree_Hierarchy',1,1) -- Code Using Cursor for Multiple insert --... --... --... -- End End GO