【问题标题】:Foregin key constraint error but shouldn't be occuring外键约束错误,但不应发生
【发布时间】:2010-10-27 17:45:51
【问题描述】:

我有一个包含 5 个条目的列表,标识列 (PK) 中的第一列,在父表中是通过 ID (FK) 与此列表相关的列。我在 Web 应用程序中使用 C# 运行带有存储过程的 ExecuteScalar 以将项目插入父表中。

这是在 SQL 数据库中

列表:

ID INT (PK),
SKILL_SET_NAME VARCHAR

父表:

ID INT,
SKILL_SET_ID INT (FK)

列表中的项目:

1, SOMETHING
2, ANOTHER
3, ELSE

在父表中插入语句

INSERT INTO PARENT TABLE
(ID, SKILL_SET_ID)
VALUES
([NUMBER], 1)

ACTUAL CODE(将ExecuteScalar改为NonQuery,SkillSetID为外键)

public static void SetRIPSSkillSetDetails(int HDR_ID, int SkillSetID, string SkillSetOptional, int SkillSetRating)
{
    ArrayList al = new ArrayList();

    al.Add(new DictionaryEntry("@HDR_ID", HDR_ID));
    al.Add(new DictionaryEntry("@SKILL_SET_ID", SkillSetID));
    al.Add(new DictionaryEntry("@SKILL_SET_OPTIONAL", SkillSetOptional));
    al.Add(new DictionaryEntry("@SKILL_SET_RATING", SkillSetRating));

    Core.RunNonQuery("web", "[IPAM_GLOBAL_INSERT_PARTICIPANT_RATING_DTL]", al);

当代码运行 ExecuteScalar 时出现外键约束错误,请帮助

【问题讨论】:

  • 你能直接在 SQL 服务器上运行那个插入吗?
  • 为什么选择 ExecuteScalar?我想你的意思是 ExecuteNonQuery?
  • 是的,我当然可以,这就是为什么这让我摸不着头脑
  • 如果不查看 SqlCommand 的所有代码,就很难猜出发生了什么。您是否在执行之前检查过 SqlCommand 以验证参数值是否与您认为您正在执行的操作相匹配?可能是您没有按照添加的顺序从 ArrayList 中检索值(例如,使用 foreach),并且实际的 SP 调用构造为“EXEC xxx (x,x,x,x)”而不是使用SqlParameters,可能以错误的顺序传递它们?我当然要到这里了..
  • 好吧,我又挖了一些,发现这是我的存储过程。

标签: c# asp.net sql foreign-keys constraints


【解决方案1】:

存储过程被炸了,有人说你可以从VS单步执行sql storec过程,我该怎么做?

【讨论】:

    猜你喜欢
    • 2011-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-15
    • 2023-03-13
    • 2015-04-03
    • 2018-02-19
    相关资源
    最近更新 更多