0

我通过 XML 文件插入 SQL 表数据

<root>
  <Attributedata>
    <AttributeLabelID>-1</AttributeLabelID>
    <ProductID>1</ProductID>
    <AttributeLabel>User Label</AttributeLabel>
    <AttributeTypeID>1</AttributeTypeID>
    <Value>
        <valueID>-1 </valueID>
        <Uservalue>sss </Uservalue>
        <ProductAttributelID>1</ProductAttributelID>
    </Value>
    <Value>
        <valueID>-1 </valueID>
        <Uservalue>sss </Uservalue>
        <ProductAttributelID>1</ProductAttributelID>
    </Value>
    <CreatedBy >1</CreatedBy>
</Attributedata>
<Attributedata>

    <AttributeLabelID>-1</AttributeLabelID>
    <ProductID>1</ProductID>
    <AttributeLabel>User Label</AttributeLabel>
    <AttributeTypeID>1</AttributeTypeID>
    <Value>
        <valueID>-1 </valueID>
        <Uservalue>sss </Uservalue>
        <ProductAttributelID>1</ProductAttributelID>
    </Value>

    <CreatedBy >1</CreatedBy>
</Attributedata>
<Attributedata>

    <AttributeLabelID>-1</AttributeLabelID>
    <ProductID>1</ProductID>
    <AttributeLabel>User Label</AttributeLabel>
    <AttributeTypeID>1</AttributeTypeID>
    <Value>
        <valueID>-1 </valueID>
        <Uservalue>sss </Uservalue>
        <ProductAttributelID>1</ProductAttributelID>
    </Value>
    <Value>
        <valueID>-1 </valueID>
        <Uservalue>sss </Uservalue>
        <ProductAttributelID>1</ProductAttributelID>
    </Value>
    <CreatedBy >1</CreatedBy>
</Attributedata>
</root>

在表 1 中,Attributevalueid是自动生成的主键。我当时想Attributevalueid在另一个表 table2 中插入 - 怎么可能通过存储过程?

4

3 回答 3

1

使用OUTPUT 子句

DECLARE @t TABLE ( AttributeValueId int )

INSERT TABLE_NAME ( ... )
SELECT ...
FROM ....
OUTPUT 
    Inserted.AttributeValueId INTO @t

INSERT OTHER_TABLE ( ... )
SELECT AttributeValueId
FROM @t
于 2011-08-02T09:53:57.517 回答
1

您可能应该使用触发器。

请重新标记您的问题。

于 2010-12-29T12:34:25.683 回答
0

我同意触发器响应,但您也可以将字段从 Identity 更改为常规 int 并使用计数器表。它需要一些额外的逻辑,但不是很多,您可以将所有业务逻辑保留在您的应用程序中。

我仍然会接受触发建议。我只是提供这个作为在其他情况下对我很有效的替代方案。

于 2010-12-29T12:59:45.687 回答