1

我需要为每个注册我的应用程序的客户创建新表。

例如,我有两张桌子

Order_History_<ClientIdentifier>
Transcation_Log_<ClientIdentifier>

在 SQL Server 中,如何随时随地创建具有自定义名称的表,以及如何根据正在访问我的应用程序的客户端查询它们。

4

1 回答 1

1

非常简单的方法:

create procedure CreateTableForUser
(
    @UserName nvarchar(100)
)
AS
BEGIN

declare @createScript nvarchar(max) =
'
create table dbo.Order_History_<ClientIdentifier>
(
    id int PRIMARY KEY,
    val nvarchar(100)
)
'

declare @createScript2 nvarchar(max) =
'
create table dbo.Transcation_Log_<ClientIdentifier>
(
    id int PRIMARY KEY,
    val nvarchar(100)
)
'

set @createScript = REPLACE(@createScript, '<ClientIdentifier>', @UserName)
set @createScript2 = REPLACE(@createScript2, '<ClientIdentifier>', @UserName)

exec sp_executesql @createScript
exec sp_executesql @createScript2

END

如果您需要更“自动”的东西,例如通过复制他的所有字段和键从模板表创建表,我将使用 sys. 意见,但写起来有点长:P

于 2012-11-18T09:22:26.087 回答