0

所以我得到的确切错误消息是:

INSERT 语句与 FOREIGN KEY 约束“FK_featuredtype_featured”冲突。冲突发生在数据库“docphin”、表“dbo.featured”、列“featuredID”中。该语句已终止。”

我调用具有插入语句的 sp 的 vb 代码部分是:

If isChanged1.Checked Then
    lq.admin_RemoveFeatured(isChanged.featuredID1)
    lq.admin_AddFeatured(title1.Text, text1.Text, imageURL1.Text, login1.Checked, index1.Checked, mobile1.Checked, Integer.Parse(priority1.Text))

End If

If isChanged2.Checked Then
    lq.admin_RemoveFeatured(isChanged.featuredID2)
    lq.admin_AddFeatured(title2.Text, text2.Text, imageURL2.Text, login2.Checked, index2.Checked, mobile2.Checked, Integer.Parse(priority2.Text))

End If

现在奇怪的是,当我在 sql server 中执行 admin_AddFeatured 时它工作正常。

admin_Remove精选:

CREATE PROCEDURE [dbo].[admin_RemoveFeatured] 
    -- Add the parameters for the stored procedure here
    @featuredID int
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for procedure here
    delete from featuredtype where featuredID= @featuredID
    delete from featured where featuredID= @featuredID


END

GO

admin_Add精选:

CREATE PROCEDURE [dbo].[admin_AddFeatured] 
    -- Add the parameters for the stored procedure here
    @title varchar(500) , 
    @text varchar(MAX),
    @imageURL varchar(200),
    @loginPage bit,
    @indexPage bit,
    @mobilePage bit,
    @priority int
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

         -- Insert statements for procedure here
        insert into featured
        (title,text,imageURL, priority )
        values
        (@title,@text,@imageURL, @priority)

        insert into featuredtype
        (loginPage, indexPage, mobilePage)
        values
        (@loginPage, @indexPage, @mobilePage)


END

GO

我一直在测试不同的解决方案,但我似乎无法理解这里可能出了什么问题。我唯一的想法是 ic 可能与我如何获取我插入删除的每个“功能”项目的 ID 字段有关。为此,我制作了一个模块:

Public Module isChanged
    Public featuredID1 As Integer
    Public featuredID2 As Integer
    Public featuredID3 As Integer
    Public featuredID4 As Integer
    Public featuredID5 As Integer
    Public featuredID6 As Integer
End Module

然后,在页面加载 sub 中,我使用 sp 并读取 ID,例如:

   Dim lq2 As New lqDFDataContext
        Dim var = lq2.admin_GetFeatured().ToList()
        Dim i As Integer = 1

        For Each f In var
            If i = 1 Then
                isChanged.featuredID1 = f.featuredID
                title1.Text = f.title
                text1.Text = f.text
                imageURL1.Text = f.imageURL
                login1.Checked = f.loginPage
                index1.Checked = f.indexPage
                mobile1.Checked = f.mobilePage
                priority1.Text = Str(f.priority)
            End If

etc...
4

1 回答 1

3

你没有featuredIDfeaturedType表中设置

尝试这个

   select @featuredID = Scope_Identity()

   insert into featuredtype 
        (loginPage, indexPage, mobilePage,featuredID) 
        values 
        (@loginPage, @indexPage, @mobilePage, @featuredID) 
于 2012-09-05T14:01:10.367 回答