想写一个随机数函数 在 2 8 14 29 42 五个数中随机选选中一个函数
同时需要一个trigger 需要循环插入记录 字段如下 ID为 0-9999中的随机数 level为1或2 type为1-9中的随机数 score为0-100中的随机数 dif为0-100中的随机数 title为2 8 14 29 42 中的任意一个 title2 title3 title4 title5为空 time为0-100中的随机数
。该如何编写呢?或者各位大大给我个例子,我参考看看。

解决方案 »

  1.   

    写了3列,其他的自己补充
    ;with tb as
    (
    select 2 as title, NEWID() as id union all
    select 8, NEWID() union all
    select 14, NEWID() union all 
    select 29, NEWID() union all 
    select 42, NEWID()
    )
    , result as
    (
    select top 1 * from tb
    order by id
    )
    select 
    CONVERT(int, RAND() * 10000) as ID, 
    CONVERT(int, RAND()*2) + 1 as [level],
    (SELECT top 1 title from result) as Title
      

  2.   

    newid()函数和rand()函数,好像在函数和触发器中没办法用吧。会报错:消息 443,级别 16,状态 1,过程 random_value,第 14 行
    在函数内对带副作用的运算符 'newid' 的使用无效。
      

  3.   


    可以,也就是clr 触发器:创建CLR自定义触发器-C#
    http://www.alixixi.com/Dev/Web/ASPNET/aspnet3/2007/200702067021.html
      

  4.   

    如果在函数中用到了一些比如 rand函数,newid函数,那么就会报错,在函数内对带副作用的运算符 'newid' 的使用无效。所以,楼主要实现返回随机数,只能考虑其他的办法,而不能用这些newid函数了。