2010-05-16 54 views
0

我有一張表課程,每門課程都有很多資源。基於一組其他列的自動增量

Course 
========== 
course_id 

Resource 
========== 
course_id 
number 

我想每個course_id都有一個單獨的自動增量。換句話說,我想自動枚舉給定課程的資源。例如,資源表格可能類似於:

course_id | number 
================== 
1   | 1 
1   | 2 
2   | 1 
1   | 3 
1   | 4 
2   | 2 
2   | 3 

等等。 我想使用IBM DB2在SQL中執行此操作

回答

0

你應該讓Resource挑自己的IDS ...

resource_id | course_id 
======================= 
1   | 1 
2   | 1 
3   | 2 
4   | 1 
5   | 1 
6   | 2 
7   | 2 

...並發現通過查詢排名:

SELECT course_id, 
     (SELECT COUNT(*) 
      FROM Resource 
     WHERE resource_id < r.resource_id 
     ) + 1 AS rank 
    FROM Resource r 

這無疑是對優化器更多的工作,但會在其他各方面都大大簡化生活(例如,處理刪除)。

+0

爲了方便起見,在閱讀表格時,如何根據'從資源中選擇max(number)+1'來設置Course_id的插入觸發器,其中course_id = <插入項目的'我不確定是否您如果您有超過Course_id和編號的密鑰,可以執行此操作,但您始終可以使用resource_id。 – 2010-05-27 17:56:06