1
CREATE TRIGGER copy_pk_into_fk_trigger
    AFTER insert ON tableA
    FOR EACH ROW
    BEGIN
      insert into tableB (tblA_ID) values (new.tblA_ID);
END$$

我正在使用上面的触发器从 tableA 复制主键值并作为外键插入到 tableB 中。但在那之后,每当我使用 ASP.net 中的 detailsView 编辑 tableB 中的记录时,外键值变为“NULL”。这导致没有更多的黑白父母和孩子的联系。请帮助我。

[tableA 具有 col: tblA_ID、tblA_val 和
TableB 包含 tblB_ID、tblA_ID、tblB_str
等]

4

2 回答 2

0

我认为这与您的触发器无关。因为触发器只会在插入被触发后运行。你能告诉我在 detailsView 中更新的查询吗?你确定你也没有提到更新声明吗?

于 2012-10-03T16:15:56.800 回答
0

下面是 SqlDATASource 和 DetailsView 的完整源代码:

<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:HADIConnectionString %>" 
            DeleteCommand="DELETE FROM &quot;INDENT_FILE_NO&quot; WHERE &quot;FILE_NO_ID&quot; = :original_FILE_NO_ID AND ((&quot;INDENT_ID&quot; = :original_INDENT_ID) OR (&quot;INDENT_ID&quot; IS NULL AND :original_INDENT_ID IS NULL)) AND ((&quot;FILE_NO&quot; = :original_FILE_NO) OR (&quot;FILE_NO&quot; IS NULL AND :original_FILE_NO IS NULL)) AND ((&quot;FILE_DESCRIPTION&quot; = :original_FILE_DESCRIPTION) OR (&quot;FILE_DESCRIPTION&quot; IS NULL AND :original_FILE_DESCRIPTION IS NULL)) AND ((&quot;INDENTER&quot; = :original_INDENTER) OR (&quot;INDENTER&quot; IS NULL AND :original_INDENTER IS NULL))" InsertCommand="INSERT INTO &quot;INDENT_FILE_NO&quot; (&quot;FILE_NO_ID&quot;, &quot;INDENT_ID&quot;, &quot;FILE_NO&quot;, &quot;FILE_DESCRIPTION&quot;, &quot;INDENTER&quot;) VALUES (:FILE_NO_ID, :INDENT_ID, :FILE_NO, :FILE_DESCRIPTION, :INDENTER)" OldValuesParameterFormatString="original_{0}" ProviderName="<%$ ConnectionStrings:HADIConnectionString.ProviderName %>" 
            SelectCommand="SELECT * FROM &quot;INDENT_FILE_NO&quot; WHERE (&quot;INDENT_ID&quot; = :INDENT_ID)" 
            UpdateCommand="UPDATE &quot;INDENT_FILE_NO&quot; SET &quot;INDENT_ID&quot; = :INDENT_ID, &quot;FILE_NO&quot; = :FILE_NO, &quot;FILE_DESCRIPTION&quot; = :FILE_DESCRIPTION, &quot;INDENTER&quot; = :INDENTER WHERE &quot;FILE_NO_ID&quot; = :original_FILE_NO_ID AND ((&quot;INDENT_ID&quot; = :original_INDENT_ID) OR (&quot;INDENT_ID&quot; IS NULL AND :original_INDENT_ID IS NULL)) AND ((&quot;FILE_NO&quot; = :original_FILE_NO) OR (&quot;FILE_NO&quot; IS NULL AND :original_FILE_NO IS NULL)) AND ((&quot;FILE_DESCRIPTION&quot; = :original_FILE_DESCRIPTION) OR (&quot;FILE_DESCRIPTION&quot; IS NULL AND :original_FILE_DESCRIPTION IS NULL)) AND ((&quot;INDENTER&quot; = :original_INDENTER) OR (&quot;INDENTER&quot; IS NULL AND :original_INDENTER IS NULL))" ConflictDetection="CompareAllValues">

        <UpdateParameters>
            <asp:Parameter Name="INDENT_ID" Type="Decimal" />
            <asp:Parameter Name="FILE_NO" Type="String" />
            <asp:Parameter Name="FILE_DESCRIPTION" Type="String" />
            <asp:Parameter Name="INDENTER" Type="String" />
            <asp:Parameter Name="original_FILE_NO_ID" Type="Decimal" />
            <asp:Parameter Name="original_INDENT_ID" Type="Decimal" />
            <asp:Parameter Name="original_FILE_NO" Type="String" />
            <asp:Parameter Name="original_FILE_DESCRIPTION" Type="String" />
            <asp:Parameter Name="original_INDENTER" Type="String" />
        </UpdateParameters>

详情查看:

<asp:DetailsView ID="DetailsView2" runat="server" AutoGenerateRows="False" DataKeyNames="FILE_NO_ID" DataSourceID="SqlDataSource2" Height="50px" Width="287px" >
                        <Fields>
                            <asp:BoundField DataField="FILE_NO_ID" HeaderText="FILE_NO_ID" ReadOnly="True"  SortExpression="FILE_NO_ID" Visible="False" />
                            <asp:BoundField DataField="INDENT_ID" HeaderText="INDENT_ID" SortExpression="INDENT_ID" Visible="False" />
                            <asp:BoundField DataField="FILE_NO" HeaderText="FILE_NO" SortExpression="FILE_NO" />
                            <asp:BoundField DataField="FILE_DESCRIPTION" HeaderText="FILE_DESCRIPTION" SortExpression="FILE_DESCRIPTION" />
                            <asp:BoundField DataField="INDENTER" HeaderText="INDENTER" SortExpression="INDENTER" />
                            <asp:CommandField ShowEditButton="True" ButtonType="Button" />
                        </Fields>
                    </asp:DetailsView>

但是现在,当我按下编辑按钮并编辑字段然后更新它们时,这些字段的数据保持不变。表示不采取任何行动。

于 2012-10-05T16:28:19.147 回答