0

我有一个问题请帮助我

基本上我有两张桌子table1table2

table1有两列:idname

数据是这样的

id      name        
c01    sukanth        
co2    ram            

table2还有列idname

但是现在table2 id列必须检查id列的结束编号table1并开始下一个值

像这样的东西

id      name         
c03    sukanth         
co4    ram             

例如,如果table1有结束列c99,那么table2开始idd00do1类似的

请帮我。

在这里,我有 n 个表,但必须为所有表共享相同的 id

我想将 Excel 文件数据导入数据库。我有 n 个 Excel 文件。一个 Excel 文件一个表,但所有表的 id 应该是唯一的。在 excel 文件中没有 id 列我必须根据以前的文件结束记录号创建 id

4

2 回答 2

0

为此,您必须管理自己。因为 SQL Server 不知道您的要求,如果一个表以 1001 结尾并从 1002 在另一个表上启动一个新标识。SQL Server 标识语法是IDENTITY [(seed, increment)]这意味着,每次插入一个新行它会看到 Last Seeeed和 Increment it by the value 你之前在设计表格时设置的值。

因此,如果您想这样做,请将 Excel 中的所有行插入 SQL Server。然后,在开始在下一个表中插入行之前,获取上一个表的 Last Seeed值。然后,您可以使用该值进行插入。

但这是非常糟糕的解决方案,你知道在我的情况下,我会做的是。我只是在我的应用程序中设置了一个计数器变量来处理行位置,我只需将该值插入所需的表中。

无论如何,您想这样做,您可以完全删除该身份属性。因为你自己管理如此。

我建议以下方式:

Int RowNum=0
Foreach (Excel doc){
   Foreach (Rows in doc)
     {
        RowNum++;
        Fields1=val ...n
        If data is something 
           {
               Insert into Table 1 values(RowNum,Fields...n)
           }

        If data is something else
           {
               Insert into Table 2 values(RowNum,Fields...n)
           }
     }
}

我认为这样你就可以管理你的灵魂。

这只是我对 Scratch 示例的建议。希望你明白为什么我建议你那样做。

于 2013-06-26T07:36:05.487 回答
0

所以,你想要你的肮脏方式。

这正是您正在寻找的。

好的,那么现在看看这个。

假设您有一个如下表:

CREATE TABLE products1 (id int IDENTITY, product varchar(40))
CREATE TABLE products2 (id int IDENTITY, product varchar(40))

行。因此,现在您将 Excel 中的记录插入到 Product1 表中。像

Int LastId=0

Foreach (Rows from ExcelDoc1){
    ProductName=ExcelColumn
    Insert into Products1 values(ProductName)
}

所以现在获取最后插入行的标识符,以便我们可以在另一个必须是起始 ID 的表上使用它,如下所示:

LastId= Select isnull(Max(ID),0)+1 as NextId from Products1
So now you have an Last Identity on LastID

So Before Inserting an new row on the Next table
Modify that tables, Identity Insert Mode, Because you are self inserting an new Identity on that table. 

SET IDENTITY_INSERT products1 ON

Foreach (Rows from ExcelDoc2){
    ProductName=ExcelColumn
    Insert into Products1 values(LastId,ProductName)
    LastId++
} 

Again reset that Setting so that, you dont have to insert an identity value yourslef.
 SET IDENTITY_INSERT products1 OFF

完毕!!!

如果有的话看看这个链接: http: //msdn.microsoft.com/en-us/library/aa259221 (v=sql.80).aspx

于 2013-06-26T07:59:41.267 回答