动态建表的问题
我想用一个触发器,当该表插入一个新的数据时候,SQL自己建一个表
表ExamType 结构如下
ET_ID 自增加
ET_Name 名字
ET_TableName对应的表名后缀
新建的表名是变量来的,触发器如下
CREATE TRIGGER [AddTable] ON [dbo].[User_ExamType]
FOR INSERT
AS
declare @TableID char(5)
declare @MAXID smallint
select @MAXID=MAX(ET_ID) from User_ExamType
select @TableID=ET_TableID from User_ExamType where ET_ID=@MAXID
declare @TableName char(20)
set @TableName ='Questeion_'+@TableID
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].['+@TableName+']') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [@TableName]
--@TableName是要建的表的变量名,但是SQL不解释他,直接就建一个表的名字是@TableName
有什么办法解决呢
--还有一个问题,取出一个表的最大ID号,用什么办法最好,具体怎么实现呢
CREATE TABLE [@TableName] (
[Ques_ID] [int] IDENTITY (1, 1) NOT NULL ,
[Ques_Title] [nchar] (16) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[Ques_Type] [nchar] (30) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[Ques_IsPic] [bit] NOT NULL ,
[Ques_Sel1] [nchar] (200) COLLATE Chinese_PRC_CI_AS NULL ,
[Ques_Sel2] [nchar] (200) COLLATE Chinese_PRC_CI_AS NULL ,
[Ques_Sel3] [nchar] (200) COLLATE Chinese_PRC_CI_AS NULL ,
[Ques_Sel4] [nchar] (200) COLLATE Chinese_PRC_CI_AS NULL ,
[Ques_Sel5] [nchar] (200) COLLATE Chinese_PRC_CI_AS NULL ,
[Ques_Sel6] [nchar] (200) COLLATE Chinese_PRC_CI_AS NULL ,
[Ques_Sel7] [nchar] (200) COLLATE Chinese_PRC_CI_AS NULL ,
[Ques_Sel8] [nchar] (200) COLLATE Chinese_PRC_CI_AS NULL ,
[Ques_Sel9] [nchar] (200) COLLATE Chinese_PRC_CI_AS NULL ,
[Ques_Answer] [nchar] (200) COLLATE Chinese_PRC_CI_AS NULL ,
[Ques_GetPoint] [int] NULL ,
[Ques_PointID] [int] NULL ,
[Ques_BookAnswer] [nchar] (200) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]