将自动增量列添加到用户定义表类型是标准吗?

时间:2014-03-21 03:35:31

标签: c# sql sql-server-2008 tsql

我的客户端C#app中有5个列的集合。在DB中,我创建了一个包含六列的用户定义表类型(UDTT)。第一列是一个自动增量,我将用它来获取存储在其中的每一行。表结构为pSelCRSInfo

    while(@cntr <= @pProgDuration)
    begin 

        select 
        @CRSID=CRSID,
        @YearNo=YearNo,
        @IsCompulsory=IsCompulsory,
        @EntDT=EntDT,
        @EmpID=EmpID 
        from @pSelCRSInfo where CntrNo=@cntr

        insert into DefaultCourses 
        (PRGID,CRSID,YearNo,IsCompulsory,EntDT,EmpID)
        values (@newPRGID,@CRSID,@YearNo,@IsCompulsory,@EntDT,@EmpID)
                                set @cntr = @cntr + 1
          end

在我的定义中我添加了

create type dbo.SelectedCourses
as table
(

    CntrNo int not null IDENTITY(1, 1), 
    CRSID int,
    YearNo int,
    IsCompulsory varchar(20),
    EntDT datetime,
    EmpID int
);
go

目前我正在努力解决如何将5列收集传递到需要6列的集合?

人们通常会创建带有自动增量列的UDTT结构来接受集合吗?因为我可以从客户端生成自动增量列生成的数字,然后将其与集合

一起发送

感谢

2 个答案:

答案 0 :(得分:0)

我会说这完全取决于你。如果自动递增的值适合您的目的,那么一定要使用它们。我做到了。

答案 1 :(得分:0)

所以假设我已经创建了一个带有自动增量列的UDTT,那么我仍然应该像下面那样传递6个列集合并将第一列留空

//leave the first column empty
acd.dtCourses.Rows[CollCounter][0] = string.Empty    
acd.dtCourses.Rows[CollCounter][1] = dt.Rows[i][2];
acd.dtCourses.Rows[CollCounter][2] = dt.Rows[i][3];
acd.dtCourses.Rows[CollCounter][3] = dt.Rows[i][4];
acd.dtCourses.Rows[CollCounter][4] = DateTime.Today;
acd.dtCourses.Rows[CollCounter][5] = myAcedemics.EmpID;

dtCoursesdatatable来接受该集合,而我的acd是商家类的对象Academics