hi all
I want to create a table with a long varchar column, maybe it's the url.
according to dns spec, the url's max length is fixed. but I have
to deal with url having long params such as
a.html?q=aaaaaaaaaaaaaaaaaaaaaaaaaaaa&fl=bbbbbbbbbbbbbbbbbbbbbbbb....
I want the url is unique when inserting it.
I googled and found
http://stackoverflow.com/questions/6800866/how-to-store-urls-in-mysql
this post suggests use md5 of url. But in theory, there will be
conflict that two different urls will have the same md5(even it's
probablitiy is very small). I want to a absolute correct solution.
one method i can come up with is using select ... for update
1. begin transaction
2. select url from tb where md5='xxxx' for update
3. if the url is not exist, insert into this url; else do nothing
also I need to set the transaction isolation to SERIALIZABLE
is this solution correct in multithread/process environment?
another method is using trigger to check whether the url exist. I
don't know whether this method will be faster than previous one. how
to ensure it's correctness in multithread environment?
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/mysql