-- 不试不知道,一试吓一跳!
http://topic.csdn.net/u/20100610/15/c9ded663-13ce-4d49-b69c-551e57a6f6fd.htmldrop table tb;CREATE TABLE tb(
ID INT,
randname VARCHAR(10) default round(RAND()*100000,0)
);-- DELETE FROM TB;
insert into tb(id) values(3);select * from tb;-- 其实你这个不需要用“触发器”来实现,
-- 在这个字段上创建一个随机数的默认值就OK了!
http://topic.csdn.net/u/20100610/15/c9ded663-13ce-4d49-b69c-551e57a6f6fd.htmldrop table tb;CREATE TABLE tb(
ID INT,
randname VARCHAR(10) default round(RAND()*100000,0)
);-- DELETE FROM TB;
insert into tb(id) values(3);select * from tb;-- 其实你这个不需要用“触发器”来实现,
-- 在这个字段上创建一个随机数的默认值就OK了!
drop table tb;CREATE TABLE tb(
ID INT,
randname VARCHAR(10) default round(RAND()*100000,0)
);-- DELETE FROM TB;
insert into tb(id)
select 1 union all select 2 union all select 3select * from tb;
--RAND()函数的问题在这里
/*
ID randname
----------- ----------
1 18358
2 18358
3 18358(所影响的行数为 3 行)
*/
drop table tb;CREATE TABLE tb(
ID INT,
randname VARCHAR(100) default checksum(newid())
);-- DELETE FROM TB;
insert into tb(id)
select 1 union all select 2 union all select 3select * from tb;
--newid()函数就没有问题了
/*
ID randname
----------- ----------------------------------------------------------------------------------------------------
1 1810815142
2 2071327481
3 1975422698(所影响的行数为 3 行)
*/
-- 人家只要求生成数字,也就是说不能有字符,newid()函数会生成字符与数字的混合!
-- 嗯,谢谢:记住啦:checksum()
ID INT,
randname VARCHAR(6) default substring(convert(varchar(100),abs(checksum(newid()))),1,6)
);-- DELETE FROM TB;
insert into tb(id)
select 1 union all select 2 union all select 3select * from tb;