/ *
* Trigger for history
* 情況:
* 大量資料須記錄做歷史紀錄,在sever端指定insert進某一張表後觸發trigger,
* 能依照當前月份分配至該月份的表;或動態建立當月份的表。
*/
先對一個table(叫table_name)建立trigger::
-- begin sql
use db_name
go
create trigger trigger_name on table_name
instead of insert as
-- instead of 代表有insert動作進入這張表時(table_name),做下面的動作取代掉insert。
-- 也可使用 for/after 則本來那筆資料一樣會插入表內(table_name),並做下面的動作。
-- 也可以針對其他如 delete/update 動作發生時寫個trigger。
-- 宣告與給值::
DECLARE @table_variable_name nvarchar(25);
DECLARE @year nvarchar(4);
DECLARE @mon nvarchar(2);
DECLARE @equip_id int;
DECLARE @string_variable nvarchar(13);
SET @year = convert(nvarchar,DATEPART (year, GETDATE()));
SET @mon = convert(nvarchar,DATEPART (month, GETDATE()));
-- DATEPART 函數取得想要的時間單位,回傳的是整數,因為要做成字串再使用convert轉型別。
SET @table_variable_name = concat('history',@year, '_', @mon);
-- 組成字串 Eg: history2014_12 當做table的名稱(會隨著年份月份不同)。 concat
select @equip_id = equip_id from inserted;
select @string_variable = a_string from inserted;
-- 從暫存的inserted表取得原先要插入table_name表的值,指定給兩個變數。 inserted & deleted
-- 檢查201412月份的歷史資料表有沒有存在,沒有就建立。
IF NOT EXISTS (select * from db_name.sys.objects where name = @table_variable_name)
-- 使用Exec函數執行語法,可以解決直接使用語法時不能用字串變數做為table名稱(必須宣告table變數)
begin
Exec('CREATE TABLE ' + @table_variable_name +'( [ID] [int] IDENTITY(1,1) PRIMARY KEY,
[col_1] [int] NULL,
[col_2] [nvarchar](MAX) NULL,
[create_time] [datetime] NOT NULL DEFAULT GETDATE() ) ')
end
-- 改插入資料到該月份的表也用exec函數執行
Exec('insert into ' + @table_variable_name + '(col_1, col_2) values (' + @equip_id + ', ''' + @string_variable + ''')');
-- 變數是字串的值要再加個單引號,要再用一個單引號加上本來要的那個單引號前;要加入 ' 要用> ''
go
-- end sql
當在server端使用上面語法::
insert equip_id, a_string into table_name values(1234, 'how are you');
會觸發上面已建立的trigger,將原先要插入表table_name的值改插入目前年月份的別張表。
當然在server端也可以做檢查該年月份表存不存在、建立、插入的動作;
或乾脆一次建立好每個月的表,在server端判斷年月份就可以;
使用這個方法是讓server端不做這件事,統一插入某張表後,就交給資料庫自己處理,也減少去access資料庫的時間。
// note: delete trigger:: drop trigger trigger_name
// end
2014年12月29日 星期一
2014年11月3日 星期一
jQuery筆記#2 元素的checked值
* 筆記JQuery語法--------------------
*
* 取得元素checked的值轉為1或0
*
* --------------------------------------
{
$('element').prop("checked"); // true or false
+$('element').prop("checked"); // 1 or 0
}// end note
*
* 取得元素checked的值轉為1或0
*
* --------------------------------------
{
$('element').prop("checked"); // true or false
+$('element').prop("checked"); // 1 or 0
// 在 $ 前加上 + 會將boolean值轉為1或0
// true => 1, false => 0
}// end note
標籤:
0,
1,
checked,
JQuery,
object.property
2014年8月26日 星期二
JavaScript #1 查用物件特性的值
因為要存取物件的某個特性裡的值(某個屬性裡的值),
但是物件是從DB查詢出來的, 不確定特性的名稱,
為了要用裡面的值, 一直使用 點 . 後面接變數名稱都無法使用,
後來查書才發現原來還有另一個存取特性的方法, (犀牛書果然是必讀的聖經)
也適用在識別字是保留字的時候使用中括號[ ]方法。
使用物件時, 不知道特性的識別字(不知道屬性名字)時, 特性是不固定時,
可以使用中括號[ ]裡面再使用字串變數來查用特性的值。
/ *
* 查用物件特性的兩個方法
* 參考: JS聖經犀牛書 :: JavaScript大全 第六版, o'reilly
*/
查用物件特性的值的方法有兩種:
A: 使用 . (點)
物件.特性
B: 使用 [ ] (中括號)
物件["特性"]
EX: -----------------------------------------------------------
var O = {}; // new an object
O.mon = 1; // has its own property "mon"
var week_name = "mon"; // new a string variable
console.log(O.mon); // output: 1
console.log(O.week_name); // output: undefined
----------------------------------------------------------------
使用 . 來存取物件特性就不能使用變數,
但使用 [ ] 就可以在裡面使用字串型態的變數存取到物件的特性,
是一個實用的小技巧~
// end
但是物件是從DB查詢出來的, 不確定特性的名稱,
為了要用裡面的值, 一直使用 點 . 後面接變數名稱都無法使用,
後來查書才發現原來還有另一個存取特性的方法, (犀牛書果然是必讀的聖經)
也適用在識別字是保留字的時候使用中括號[ ]方法。
使用物件時, 不知道特性的識別字(不知道屬性名字)時, 特性是不固定時,
可以使用中括號[ ]裡面再使用字串變數來查用特性的值。
/ *
* 查用物件特性的兩個方法
* 參考: JS聖經犀牛書 :: JavaScript大全 第六版, o'reilly
*/
查用物件特性的值的方法有兩種:
A: 使用 . (點)
物件.特性
B: 使用 [ ] (中括號)
物件["特性"]
EX: -----------------------------------------------------------
var O = {}; // new an object
O.mon = 1; // has its own property "mon"
var week_name = "mon"; // new a string variable
console.log(O.mon); // output: 1
console.log(O.week_name); // output: undefined
console.log(O[week_name]); // output: 1
----------------------------------------------------------------
使用 . 來存取物件特性就不能使用變數,
但使用 [ ] 就可以在裡面使用字串型態的變數存取到物件的特性,
是一個實用的小技巧~
// end
標籤:
物件特性,
物件屬性,
JavaScript,
JS,
Object,
object.property
2014年8月8日 星期五
MS SQL server 筆記#1 SQL語法錯誤
常常被MS的SQL語法搞得很怒火呀... 筆記一下犯過的錯誤吧
/ *
* 查詢語法小錯誤,要查詢資料類型為 nvarchar
*/
原本錯誤的語法:
SELECT c1, c2 FROM table1
WHERE step_no = "0A"
錯誤訊息:
無法將step_no裡的資料類型轉換為int
正確語法:
SELECT c1, c2 FROM table1
WHERE step_no = '0A'
只是 " 與 ' 之差異阿!!!!
//end
/ *
* 查詢語法小錯誤,要查詢資料類型為 nvarchar
*/
原本錯誤的語法:
SELECT c1, c2 FROM table1
WHERE step_no = "0A"
錯誤訊息:
無法將step_no裡的資料類型轉換為int
正確語法:
SELECT c1, c2 FROM table1
WHERE step_no = '0A'
只是 " 與 ' 之差異阿!!!!
//end
2014年7月30日 星期三
JQuery筆記#1 選取文字內容
* 筆記JQuery語法--------------------
*
* 選取<svg> <text>裡面的內容
*
* --------------------------------------
{
- HTML
<svg>
<g>
<text id="1234">測試文字<text>
</g>
</svg>
- Javascript
// svg元素下的 g元素下的 text
var select_text = $('svg g text');
// 點選 text元素, 選取出被點選元素 (this)的屬性為 id的內容, 及innerHTML的內容
select_text.click(function(){
var Id = $(this).attr('id'); //1234
var Name = this.innerHTML; //測試文字
});
}// end note
2014年7月3日 星期四
node.js使用ws.js簡單練習建立web socket
參考以下兩個網頁:
web socket server
html檔
這次練習目的是要了解建立並使用web socket server與瀏覽器互相傳送資訊。
使用的是ws framework。
之後開啟命令提示字元,輸入:
npm install ws.js
開啟文字編輯器
用web socket server裡的程式碼建立一個js檔(命名srv.js)
另用html檔連結裡的完整程式範例那邊的程式碼建立html檔(命名testclient.html)
完成之後要來開啟web socket server,
使用命令提示字元,
cd至srv.js儲存的目錄,先再輸入一次:
npm install ws.js
否則會說找不到ws這個model;之後輸入:
node srv.js
成功的話會有個底線在閃,
這時候使用瀏覽器開啟html檔,
如果有連線成功、訊息已傳送的方塊就是成功了,
而在命令提示字元也會看到web socket server收到訊息。
還有其他方法也可以實作出web socket,例如socket.io
有趣的實驗,可以了解看看:
聊天廣播 - socket.io
(在cmd輸入 npm install socket.io 就可安裝)
web socket server
html檔
這次練習目的是要了解建立並使用web socket server與瀏覽器互相傳送資訊。
使用的是ws framework。
- 需要安裝 node.js
之後開啟命令提示字元,輸入:
npm install ws.js
開啟文字編輯器
用web socket server裡的程式碼建立一個js檔(命名srv.js)
另用html檔連結裡的完整程式範例那邊的程式碼建立html檔(命名testclient.html)
完成之後要來開啟web socket server,
使用命令提示字元,
cd至srv.js儲存的目錄,先再輸入一次:
npm install ws.js
否則會說找不到ws這個model;之後輸入:
node srv.js
成功的話會有個底線在閃,
這時候使用瀏覽器開啟html檔,
如果有連線成功、訊息已傳送的方塊就是成功了,
而在命令提示字元也會看到web socket server收到訊息。
還有其他方法也可以實作出web socket,例如socket.io
有趣的實驗,可以了解看看:
聊天廣播 - socket.io
(在cmd輸入 npm install socket.io 就可安裝)
標籤:
node.js,
web socket
2014年7月2日 星期三
Servlet/JSP學習#1
這是關於servlet/jsp的筆記,首先先推薦一個學習的好地方:
良葛格學習筆記: Java EE: Servlet/JSP
他也有出書,跟我一樣喜歡拿著書跟著讀的,這是本很棒的書!
書皮是長這樣的
第一篇來筆記一下安裝的東西和環境設定:
A部分: 安裝項目
良葛格學習筆記: Java EE: Servlet/JSP
他也有出書,跟我一樣喜歡拿著書跟著讀的,這是本很棒的書!
書皮是長這樣的
第一篇來筆記一下安裝的東西和環境設定:
A部分: 安裝項目
- Tomcat //我選擇的是Tomcat做為servlet的web container (web容器是界於伺服器與servlet間)
- MySQL / Connector J
B部分: 環境設定
- Java part:系統進階設定環境變數 > 新增JDK目錄位置命名JAVA_HOME > 在path之後加入 %JAVA_HOME%\bin新增CLASSPATH JDK&JRE位置(因個人安裝目的會有些不一樣要注意喔) C:\glassfish4\jdk7\lib;C:\glassfish4\jdk7\jre\lib測試有沒有成功:win+R > cmd > 分別輸入java & javac
- eclipe part:window > preferences > java > install jres > add jre 目錄> tomcat > tomcat目錄> 增加tomcat/lib servlet-api.jar
- Tomcat:可使用Tomcat目錄裡bin下的shotdown.bat先關閉 //一開始安裝完Tomcat 可用瀏覽器開啟http://localhost:8088/ 如果有看到Apche Tomcat首頁表示安裝成功,不過之後run servlet可能會發現port被占用,這時候使用shotdown.bat可關閉Tomcat,然後就可以順利執行了
- JDBC:(在eclipse內)properties > java build path > lib~ > add external jar > mysql-connector-java-5.1.30-bin.jar//能順利連結mysql
大致是這樣就可以開啟servlet的範例了。
附上一些當時參考的連結們:
附上一些當時參考的連結們:
因為是純筆記,所以不像是圖文並茂的教學文啦><
第一次將自己的學習紀錄上blog,
希望能繼續持續並累積更多東西!
see you next time~
訂閱:
文章 (Atom)