Well, first off, I need to address your statement.
as you know For ALTER TABLE, using ORDER BY expression could cause a server
crash.
Um, nope. We have over 60 MySQL reporting servers with over 80 TeraBytes of data that we use for realtime reporting for one of my clients (most tables with millions if not tens of millions of rows). We maintain an uptime of 99 (except for maintenance weekends every quarter). We execute those ALTER statements daily and it has NEVER caused our MySQL servers to crash. Now, it might in some versions, we use 4.1 not 5+.
I am NOT recommending this solution for your situation. I merely presented it as information and labeled it "craziness". Just do the damn orderby.
Now, your question. Yes it is possible to change your primary key. You would need to perform an ALTER statement. The easiest is to:
ALTER TABLE test DROP PRIMARY KEY ,
ADD PRIMARY KEY ( MyNewField );
I did not mention before, you need to know this. When you ALTER a table in MySQL it copies the entire contents of the table into a temporary table, with the change you are making and then removes the old instance. This can cause real problems if you do it on a table with millions of row. I usually tell people ALTERs should be avoided if possible when you exceed 1,000,000 rows (of course there are times there is no way around it). There is something magical that seems to happen to MySQL at that row count.
Oh, and yeah, quit acting like a troll, we are all here to help each other.
-Mike