|
|
|
เขียน trigger ใน sql server เพื่อคำนวณ และ เปรียบเทียบแบบนี้ได้ไหมครับ |
|
|
|
|
|
|
|
คือ ผมพยายามจะใช้ trigger มาคำนวณใน sql server 2008 ไม่แน่ใจว่าจะเขียนอย่างไรขอคำแนะนำด้วยนะครับ
โดยผมมี table ดังนี้
1. table: Assessment; pid, diagram_master_id, puo, luo,re
2. table: Projects; id, name, diagram, re_avg, risk_id
3. table: risk_level; risk_id, re_start,re_end, name, qty
วิธีการ
1. เมื่อมีการ update หรือ insert ที่ Assessment อยากให้ puo คูณ luo แล้วไป update ที่ re
2. หลังจากนั้นเอา re ใน ตาราง Assessment ที่มี diagram_master_id เหมือนกันมา sum กัน แล้วหารด้วยจำนวน row
(ของ diagram_master_id เหมือนกัน)
3. เมื่อได้ค่าตัวเลขออกมาแล้ว ให้ไป update ที่ตาราง Projects ใน re_avg
4. นำค่าของ re_avg มาหาว่าอยู่ในช่วงของ re_start AND re_end ใน ตาราง risk_level
5. แล้วนำ risk_id ที่เปรียบเทียบได้จากข้อ 4. มา Update ลงใน risk_id ของตาราง Projects
6. หลังจากนั้นมา count(risk_id) ของตาราง Projects ว่ามีจำนวนกี่แถว
7. เมื่อได้จำนวนแถว แล้วให้ไป update ลงที่ qty ตาม risk_id ที่เหมือนกัน
8. เสร็จ
ขอบคุณครับ :)
Tag : .NET, MySQL, Ms SQL Server 2005, Ms SQL Server 2008, Ms SQL Server 2012, Oracle
|
|
|
|
|
|
Date :
2013-05-22 00:55:29 |
By :
pyayam |
View :
1741 |
Reply :
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ใช้พวก Function ร่วมกับ Trigger ครับ (ลองเขียนดูก่อนครับ ไม่น่าจะยาก)
|
|
|
|
|
Date :
2013-05-22 06:31:47 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ไม่ทราบว่ารับทำไหมครับ เพราะทำตั้งแต่เมื่อคืนยังไม่ได้เลยครับ
ทำได้แต่ข้อ 1. ^^!
Code (SQL)
CREATE TRIGGER cal_re
ON Assessment
FOR INSERT, UPDATE, DELETE
AS
BEGIN
UPDATE Assessment SET re=puo*luo WHERE puo>0;
END;
|
|
|
|
|
Date :
2013-05-22 16:46:25 |
By :
nutt26 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ข้อ 1 ก็ไม่น่าจะเป็นแบบนั้น
มันน่าจะ UPDATE inserted ... มากกว่า
ลองศึกษาเรื่อง inserted กับ deleted table ก่อนเขียน Trigger ดีกว่านะครับ
http://code.function.in.th/sqlserver/trigger
|
|
|
|
|
Date :
2013-05-22 16:59:50 |
By :
watcharop |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 03
|