2014-09-29 172 views
0

我需要一些建議,使每個插入後按字母順序排列的觸發器。插入後按字母順序排列行(不按順序排列)

Example: 
Table COUNTRIES 
ID 1, name 'Germany' 
ID 2, name 'Bahamas' 
ID 3, name 'Algeria' 

Afterwards: 
ID 1, name 'Algeria' 
ID 2, name 'Bahamas' 
ID 3, name 'Germany' 

有關如何實現此目的的任何想法?謝謝。

PD:ORDER BYSELECT語句中使用時,只會爲了「審美」目的而排序行,真正的行將沒有任何順序。

回答

0

最後,我在http://sqlteam.com找到了這個問題的答案。

也許它會幫助其他用戶。

CREATE TRIGGER ORDER_COUNTRIES 
AFTER INSERT 
ON COUNTRIES 
AS 
BEGIN 
    UPDATE COUNTRIES 
    SET name = Table3.name 
    FROM Prueba Table1 
    JOIN (SELECT ID, seq = ROW_NUMBER() OVER (ORDER BY ID) FROM COUNTRIES) Table2 
    ON Table1.ID = Table2.ID 
    JOIN (SELECT name, seq = ROW_NUMBER() OVER (ORDER BY name) FROM COUNTRIES) Table3 
    ON Table2.seq = Table3.seq 
END 

Result:                                

ID 1, name 'Algeria' 
ID 2, name 'Bahamas' 
ID 3, name 'Germany'                  

現在表格每次插入後都會正確排序。因此,如果您使用ORDER BY或不使用SELECT,您的表格將始終按字母順序排列。

回答於http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=160974找到了 「nigelrivett」。所有的榮譽歸功於他。