[SQL] Insert 指令 疑問。
使用 SQL2008
原始資料
TABLE1:學生 PK:學號
┌───┬───┐
│ 學號 │ 姓名 │
└───┴───┘
TABLE2:修課 PK:學號、課程編號
┌────┬─────┬─────┬─────┬─────┐
│ 學號 │ 課程編號 │ 課程名稱 │ 學分數 │ 成績 │
└────┴─────┴─────┴─────┴─────┘
------------------------------------------------------------
正規化之後,拆成三表格。
表1:學生
┌───┬───┐
│ 學號 │ 姓名 │ PK:學號
└───┴───┘
表2:課程
┌────┬────┬────┐
│課程編號│課程名稱│ 學分數 │ PK:課程編號
└────┴────┴────┘
表3:成績
┌────┬────┬────┐
│ 學號 │課程編號│ 成績 │ PK:學號 課程編號
└────┴────┴────┘
-------------------------------------------------------------
我想用一組 INSET 新增資料,如下圖。
TABLE:修課
┌────┬─────┬─────┬─────┬─────┐
│ 學號 │ 課程編號 │ 課程名稱 │ 學分數 │ 成績 │
├────┼─────┼─────┼─────┼─────┤
│ 001 │ C001 │ 管理學 │ 3 │ 98 │
├────┼─────┼─────┼─────┼─────┤
│ 001 │ D003 │ 資料庫 │ 3 │ 66 │
├────┼─────┼─────┼─────┼─────┤
│ 002 │ F010 │ SQL │ 2 │ 88 │
├────┼─────┼─────┼─────┼─────┤
│ 002 │ C001 │ 管理學 │ 3 │ 96 │
├────┼─────┼─────┼─────┼─────┤
│ 003 │ C001 │ 管理學 │ 3 │ 100 │
└────┴─────┴─────┴─────┴─────┘
請問該怎麼下指令~?
是用VIEW觀點來做,應該沒錯吧?
--作法---------------------------------------------------------------------
1. 先建立一 View:修課
CREATE VIEW View_修課
AS
SELECT 成績.學號, 課程.課程編號, 課程.課程名稱, dbo.課程.學分數, dbo.成績.成績
FROM dbo.成績 INNER JOIN dbo.課程
ON dbo.成績.課程編號 = dbo.課程.課程編號
---------------------------------------------------------------------------
2.作一個trigger: dbo.triger_表單
CREATE trigger triger_表單
ON View_修課 //*將該triger 綁到 view 中
instead of insert
AS
if not exists(select inserted.課程編號
from inserted
where inserted.課程編號 = any (select 課程.課程編號 from 課程))
begin
insert into 課程 (課程編號, 課程名稱, 學分數)
select inserted.課程編號, inserted.課程名稱, inserted.學分數
from inserted
group by inserted.課程編號, inserted.課程名稱, inserted.學分數
end
if not exists(select inserted.學號
from inserted
where inserted.課程編號 = any(select 成績.課程編號 from dbo.成績)
and inserted.學號 = any(select 成績.學號 from dbo.成績 ))
begin
insert into dbo.成績 (學號, 課程編號, 成績)
select inserted.學號,inserted.課程編號,inserted.成績
from inserted
end
-----------------------------------------------------------
3.用insert指令
INSERT INTO View_修課 (學號,課程編號,課程名稱,學分數,成績)
VALUES (001 , 'C001' , '管理學' , 3 , 98 ),
(001 , 'D003' , '資料庫' , 3 , 66 ),
(002 , 'F010' , 'SQL ' , 2 , 88 ),
(002 , 'C001' , '管理學' , 3 , 96 ),
(003 , 'C001' , '管理學' , 3 , 100)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.36.54.1
※ 編輯: zong780405 來自: 114.36.55.138 (03/16 18:55)
※ 編輯: zong780405 來自: 114.36.55.138 (03/16 20:26)
※ 編輯: zong780405 來自: 140.131.114.55 (03/17 10:09)
※ 編輯: zong780405 來自: 140.131.114.55 (03/17 10:10)
→
03/18 00:22, , 1F
03/18 00:22, 1F
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):