發表文章

[Colorbox套件]_使用筆記1_燈罩跳窗

圖片
官網範例 https://www.jacklmoore.com/colorbox/example1/ 官方載點: http://www.jacklmoore.com/colorbox/ github: https://github.com/jackmoore/colorbox CDN: https://cdnjs.com/libraries/jquery.colorbox <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.colorbox/1.6.4/jquery.colorbox-min.js" integrity="sha512-DAVSi/Ovew9ZRpBgHs6hJ+EMdj1fVKE+csL7mdf9v7tMbzM1i4c/jAvHE8AhcKYazlFl7M8guWuO3lDNzIA48A==" crossorigin="anonymous"></script>  //color 語法格式 // Format: //$(selector).colorbox({key:value, key:value, key:value}); 程式(父頁面) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 <!DOCTYPE html> <html> <head> <script src= "https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js" ></script> <script src= "https://cdnjs.cloudflare.com/ajax/libs/jquery.colorbox/1.6.4/jquery.colorbox-min.js" integrity= "sha512-DAVSi/Ovew9ZRpBgHs6hJ+EMdj1fVKE+...

T-SQL筆記9_常見跟使用的系統函數(全域變數)_@@IDENTITY跟SCOPE_IDENTITY()

圖片
@@IDENTITY 傳回最後插入的識別值之系統函數,作用範圍只在該次session過程。 再生成Table Column時候我們可以設置哪個欄位要自動產生流水號 語法: column_name type IDENTITY [ (seed , increment) ] Identity屬性有兩個參數 seed : 就是所謂ID的初始值 increment : 則是ID值的固定遞增量 官網解釋 ==================================================================== 在 INSERT、SELECT INTO 或大量複製陳述式完成之後,@@IDENTITY 會包含 陳述式所產生的最後一個識別值。  如果陳述式並未影響任何含有識別欄位的資料表,@@IDENTITY 會傳回 NULL。  如果插入多個資料列,產生多個識別值,@@IDENTITY 會傳回最後一個產生的識別值。  如果陳述式引發一或多個執行插入來產生識別值的觸發程序,在陳述式之後緊接著呼叫 @@IDENTITY,會傳回觸發程序所產生的最後一個識別值。  如果在含有識別欄位之資料表的插入動作之後引發觸發程序,且觸發程序插入另一個沒有識別欄位的資料表,@@IDENTITY 會傳回第一次插入的識別值。  如果 INSERT 或 SELECT INTO 陳述式或大量複製失敗,或回復交易, @@IDENTITY 值不會還原成先前的設定。 ==================================================================== 說明: 我們說一個session包含不同的scope (可能有trigger, procedure, batch , 一串動態查詢語句 , 儲存過程) 一個batch運行的多個儲存過程就會產生多個不同的scope 至於@@IDENTITY 回傳的就會是最後一個scope的結果。 若是要取得目前scope插入的最後一個ID值就需要改用SCOPE_IDENTITY() 一個示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 use testdb CREATE TABL...

SQL查詢效能調校經驗談(一)_where條件中In包覆子查詢跟使用join方式

圖片
由於近期工作專案 有一段涉及到By 系統管理員資料表(只有工號) 去和 公司員工表(有工號、姓名) 兜出完整的姓名跟工號組合 情況: common..comper 隸屬於common DB的員工資料表(8萬筆) ndamgrsys..ndard_sysmgr_owner 系統管理者表(5~10筆) 因此一開始很直覺的寫了這麼一段SQL查詢 SQL查詢語句 1 select * from common..comper where com_empno IN ( select nso_empno from ndard_sysmgr_owner where nso_role= 'busMgr' ) 邏輯是正確的但是效能查詢上並不優 我從一張大約有8萬筆資料的員工表中來去每一筆做子查詢比對 所以如果 Record有1000筆,則in的子查詢需要跑1000次 Record有1000ㄢ筆,則in的子查詢需要跑10000次... 會將每一筆資料都去比in裡面的子查詢 SQL查詢語句(優化後) 1 2 3 select so.nso_empno,emp.com_cname from ( select nso_empno from ndamgrsys..ndard_sysmgr_owner where nso_role= 'busMgr' ) as so inner join ( select com_empno,com_cname from common..comper ) as emp ON so.nso_empno = emp.com_empno 改為從小的結果集來做join 就可以觀察到SQL查詢成本足足少了原來的三分之二左右 原本是整本字典從第一頁翻到最後一頁地毯式搜尋改為透過查部首、筆畫之類的索引 來加速查找到符合特定幾頁的條件(比方A開頭的英文單字....捨麼部首的....) 參考: https://stackoverflow.com/questions/1200295/sql-join-vs-in-performance https://ithelp.ithome.com.tw/questions/10155255 https://dotblogs.com....

SQL Server 如何從既有資料庫產生Create DATABASE , Create Table 和 Data Insert Script

圖片
在 SQL Server 中 我們時常會有為了備份或產生測資 所需要從既有DB Table去重新創建我們的Test DB Table 當然也包含生成一些測試資料(from 線上資料庫) 在SSMS中你可以對DB右鍵 如是要Create DATABASE 則請選擇編寫資料庫的指令為 如是要Create Table & Data Insert Script 工作 > 產生指令碼  可以自己選擇By 資料表去產生 預設是整個DB(會跑很久) 如是要生成一堆目前table data insert的指令 請到進階選擇 要編寫指令碼的資料類型 改為僅限資料(預設為結構描述create table.....)

T-SQL筆記8_SET XACT_ABORT使用_查檢XACT_ABORT的設定狀態

圖片
XACT_ABORT: 指定當 SQL Server 陳述式產生執行階段錯誤時,Transact-SQL 是否自動回復目前的交易。 MS SQL 預設 XACT_ABORT是OFF的 指令語法: SET XACT_ABORT { ON | OFF } https://docs.microsoft.com/zh-tw/sql/t-sql/statements/set-xact-abort-transact-sql?view=sql-server-ver15 若在進行資料庫系統開發時遇到一些執行語句 是要做批次(一次多筆)的更新、新增、刪除的時候 往往會透過所謂的「Transaction」 交易進行。 (以 BEGIN TRANSACTION 開頭 COMMIT TRANSACTION結尾,中間包覆的指令即交易行為若遇到異常時,可進行資料 Rollback 。) 但通常交易出現異常時,仍可能導致部分資料寫入資料表中。 此時就可執行此命令,強制約束SQL Server 當 SET XACT_ABORT 被Turn  ON 時,如果 Transact-SQL 陳述式產生執行階段錯誤,就 會終止和 回復整個交易 。 當 SET XACT_ABORT 被Turn  OFF 時,在某些情況下, 只會回復產生錯誤的 Transact-SQL 陳述式,交易會繼續進行 。 這裡用一個小測試案例來講解 產生只有一個Column的簡單Table CREATE TABLE t(P INT UNIQUE) 然後我故意在塞第二筆時候多塞 使其發生中途錯誤 這裡我如果加入SET XACT_ABORT  Off 結果也會一樣 也應證了預設XACT_ABORT是被Turn Off的 如果是SET XACT_ABORT  ON 則會恢復整組交易發生之前狀態(也就是完全沒有塞入半筆) 若要查看目前XACT_ABORT的設定是否有被開啟 則可以使用 指令: DBCC USEROPTIONS 傳回目前連接在使用中 (已設定) 的 SET 選項。 https://docs.microsoft.com/zh-tw/sql/t-sql/database-console-commands/dbcc-useroptions-transact-sql?redire...

[.NET Webform]_MasterPage應用_化重複為統一化局部為彈性(一)基本介紹

圖片
MasterPage組件成員: Master Page檔案(.master): 定義網頁一致外觀的網頁檔案。 ContentPlaceHolder控制項:  定義各網頁可客製化的位置。 Content Page 檔案(.aspx) :與Master Page結合的客製化網頁檔案。 Content控制項 :對應主板頁面的ContentPlaceHolder控制項,用來放置客製化網頁內容。 MasterPage 主要是用於化零碎為統整,將相似重複的網頁結構、樣式統整在一塊,利於大型整站式網站開發。 於專案、網站中要新增時候選擇主版頁面(後墜.master) .master預設的程式架構 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 <%@ Master Language= "C#" AutoEventWireup= "true" CodeFile= "MasterPage.master.cs" Inherits= "MasterPage" %> <!DOCTYPE html> <html> <head runat= "server" > <meta http-equiv= "Content-Type" content= "text/html; charset=utf-8" /> <title></title> <asp:ContentPlaceHolder ID= "head" runat= "server" > </asp:ContentPlaceHolder> </head> <body> <form id= "form1" runat= "server" > <div> <asp:Co...