【问题标题】:Is it a standard to add an auto increment column to a User Defined Table type?将自动增量列添加到用户定义的表类型是标准吗?
【发布时间】:2014-03-21 03:35:31
【问题描述】:

我在我的客户端 C# 应用程序中有一个集合,它由 5 列组成。在数据库中,我创建了一个包含六列的用户定义表类型 (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 结构来接受集合吗?因为我可以从客户端生成自动增量列生成的数字,然后将其与集合一起发送

谢谢

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      所以假设我已经创建了一个带有自动增量列的 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;
      

      dtCourses 是一个datatable 接受集合,我的acd 是业务类的对象Academics

      【讨论】:

        猜你喜欢
        • 2022-01-20
        • 1970-01-01
        • 2016-05-29
        • 2021-03-21
        • 2019-01-18
        • 2021-06-07
        • 1970-01-01
        • 2019-02-03
        相关资源
        最近更新 更多