顯示具有 T-SQL 標籤的文章。 顯示所有文章
顯示具有 T-SQL 標籤的文章。 顯示所有文章

星期五, 12月 07, 2012

TSQL LOCK!

         (UPDLOCK)    (HOLDLOCK)  (UPDLOCK,HOLDLOCK)  (TABLOCKX)
---------------------------------------------------------------------------
SELECT  not blocked    not blocked     not blocked         blocked
INSERT  not blocked      blocked         blocked               blocked
UPDATE    blocked         blocked         blocked               blocked
DELETE     blocked         blocked         blocked               blocked

 

http://stackoverflow.com/questions/7843733/confused-about-updlock-holdlock

星期四, 11月 15, 2012

Trigger insert, update, and delete

 

CREATE TRIGGER YourTrigger ON YourTable
AFTER INSERT,UPDATE,DELETE
AS
  IF EXISTS (SELECT * FROM INSERTED)
  BEGIN
    IF EXISTS (SELECT * FROM DELETED)
    BEGIN
      --UPDATE
    END
    ELSE
    BEGIN
       --INSERT
    END
    --handle insert or update data
  END
  ELSE IF EXISTS(SELECT * FROM DELETED)
  BEGIN
    --DELETE
    --handle delete data, insert into both the history and the log tables 
 
  END


參考資料  http://stackoverflow.com/questions/4391393/how-to-copy-an-inserted-updated-deleted-row-in-a-sql-server-triggers

星期一, 8月 06, 2007

由SQL SERVER取資料時,去除某一日期欄位的時間

在處理部份報表時,常會希望把DateTime型態的時間去除,可用於下條件或群組,因為此一欄位可能要使用Sql語法過濾,所以最佳的情況是在語法端就處理掉

依照微軟知識庫的建議,在下sql語法時使用Convert語法,如 CONVERT(char(10), datetimefield, 111) ,但這樣子的做法很不好,因為變成了字串型來處理

較好的處理方式應是保留DateTime格式,此時可以考慮如下的語法 DATEADD(dd, 0, DATEDIFF(dd, 0, datetimefield))

那程式中即可輕易的應用此一欄位
...WHERE DATEADD(dd, 0, DATEDIFF(dd, 0, datetimefield)) = @PARAM ...