2014-09-29 144 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”。所有的荣誉归功于他。