Alternative of trigger to insert updated date in a column I am looking for some best practice to insert the update date value in column whenever update query is run without using any trigger. So could anyone suggest me is there any best way except using Trigger or manually entering the update date value with update statement.
Thanks
I would use the DELETED table that is available when you do an update.
this is done through the OUTPUT Clause (Transact-SQL)

there is an example on the link above.

USE tempdb;
GO
CREATE TABLE dbo.table1
(
    id INT,
    employee VARCHAR(32)
);
GO

INSERT INTO dbo.table1 VALUES 
      (1, 'Fred')
     ,(2, 'Tom')
     ,(3, 'Sally')
     ,(4, 'Alice');
GO

DECLARE @MyTableVar TABLE
(
    id INT,
    employee VARCHAR(32)
);

PRINT 'table1, before delete' 
SELECT * FROM dbo.table1;

DELETE FROM dbo.table1
OUTPUT DELETED.* INTO @MyTableVar
WHERE id = 4 OR id = 2;

PRINT 'table1, after delete'
SELECT * FROM dbo.table1;

PRINT '@MyTableVar, after delete'
SELECT * FROM @MyTableVar;

DROP TABLE dbo.table1;


...

-- Results
-- table1, before delete
-- id          employee
-------------- ------------------------------
-- 1           Fred
-- 2           Tom
-- 3           Sally
-- 4           Alice
--
-- table1, after delete
-- id          employee
-------------- ------------------------------
-- 1           Fred
-- 3           Sally
-- @MyTableVar, after delete
-- id          employee
-------------- ------------------------------
-- 2           Tom
-- 4           Alice


and this is an example of how I use it, on a specific situation.

I use dynamic sql in this case.
Look as the DELETED table is used and the records are saved into a newly created table TableBackups.dbo._KB_20140513_tblStockThreshold in case we need to rollback later on.

USE SAStockLevel

DECLARE @SQL VARCHAR(max)

SET @SQL = 
'
CREATE TABLE TableBackups.dbo._KB_'+CONVERT(VARCHAR(8),GETDATE(),112)+'_tblStockThreshold
    (
      [strItemNo] [varchar](20) COLLATE Latin1_General_CI_AS
                                NOT NULL ,
      [sintMarketID] [int] NOT NULL ,
      [sintChannelID] [int] NOT NULL ,
      [lngQtyThreshold] [int] NOT NULL ,
      [dtmRecordAdded] [datetime] NOT NULL ,
      [strAddedBy] [varchar](50) COLLATE Latin1_General_CI_AS
                                 NOT NULL ,
      [dtmLastUpdated] [datetime] NOT NULL ,
      [strUpdatedBy] [varchar](50) COLLATE Latin1_General_CI_AS
                                   NOT NULL ,
      [ActiveRecord] [bit] NOT NULL ,
      [ActiveMarket] [bit] NOT NULL ,
      [ActiveChannel] [bit] NOT NULL
)

-- UK

UPDATE  dbo.tblStockThreshold
SET     lngQtyThreshold = 0
OUTPUT  DELETED.strItemNo, DELETED.sintMarketID, DELETED.sintChannelID, DELETED.lngQtyThreshold, DELETED.dtmRecordAdded, DELETED.strAddedBy, DELETED.dtmLastUpdated, DELETED.strUpdatedBy, DELETED.ActiveRecord, DELETED.ActiveMarket, DELETED.ActiveChannel
        INTO TableBackups.dbo._KB_'+CONVERT(VARCHAR(8),GETDATE(),112)+'_tblStockThreshold
WHERE   strItemNo IN (
        SELECT  strItemNo
        FROM    dbo.tblOrgGrpStockLevel
        WHERE   lngTotal - ( lngAllocated + lngReserved ) BETWEEN 1 AND 4
                AND tintOrgGrpId = 1
                AND lngTotal &lt;&gt; 0 )
        AND sintMarketID = 1
        AND sintChannelID IN ( 1, 2 )
        AND lngQtyThreshold &lt; 6666
        AND lngQtyThreshold &lt;&gt; 0
'
print @sql

BEGIN TRANSACTION T1
EXEC (@SQL)


COMMIT TRANSACTION T1



select * from TableBackups.dbo._KB_20140513_tblStockThreshold