多表生成方法

declare   @sqlstr   nvarchar ( 4000 )
declare   @table   nvarchar ( 50 )
declare   @i   int
set   @i   =   1000
while   @i < 3000
begin
    
set   @table   =   ' user_ ' + convert ( nvarchar , @i )
    
set   @sqlstr   =   '
        CREATE TABLE [dbo].[
' + @table + ' ](
            [id] [int] IDENTITY(1,1) NOT NULL,
            [userid] [int] NULL DEFAULT (0),
            [name] [varchar](20) COLLATE Chinese_PRC_CI_AS NULL DEFAULT (''''),
            [gsid] [int] NULL DEFAULT (0),
            [type] [int] NULL DEFAULT (1),
            [counts] [int] NULL DEFAULT (1),
            [submit_time] [datetime] NULL DEFAULT (getdate()),
        PRIMARY KEY CLUSTERED 
        (
            [id] ASC
        )WITH (PAD_INDEX  = OFF, IGNORE_DUP_KEY = OFF, FILLFACTOR = 90) ON [PRIMARY]
        ) ON [PRIMARY]

        CREATE NONCLUSTERED INDEX [IX_
' + @table + ' ] ON [dbo].[ ' + @table + '
        (
            [userid] ASC
        )WITH (PAD_INDEX  = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, IGNORE_DUP_KEY = OFF, FILLFACTOR = 90, ONLINE = OFF) ON [PRIMARY]

        CREATE NONCLUSTERED INDEX [IX_
' + @table + ' _userid] ON [dbo].[ ' + @table + '
        (
            [userid] ASC,
            [gsid] ASC
        )WITH (PAD_INDEX  = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, IGNORE_DUP_KEY = OFF, FILLFACTOR = 90, ONLINE = OFF) ON [PRIMARY]

        GRANT  SELECT ,  UPDATE ,  INSERT ,  DELETE  ON [dbo].['+@table+']  TO [db_aller]

    
'
    
Exec  sp_ExecuteSql  @sqlstr
    
set   @i   =   @i   +   1000
    
--  print @sqlstr
end
GO
1.注意 COLLATE Chinese_PRC_CI_AS NULL DEFAULT ('''')
2.去掉中间所有的 GO
3.增加数据表权限 GRANT  SELECT ,  UPDATE ,  INSERT ,  DELETE  ON [dbo].['+@table+']  TO [db_aller]

转载于:https://www.cnblogs.com/wenanry/archive/2006/12/28/606506.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值