这个问题在这里已经有答案了:
mysql错误1452-无法添加或更新子行:外键约束失败(21个答案)
两年前关门了。
他们之间有权威和援助的关系
我想同时向两个表添加属性
'无法添加或更新子行:外键约束失败( bibliographydb10
. book
,约束 book_ibfk_1
外键( AuthorID
)参考文献 author
( AID
))'
public static bool AddNewPackage(BookCitation package)
{
MySqlConnection connection = DataAccess.getConnection();
string insertStatement =
@"INSERT into Book (
AuthorName,
PubYear,
BookTitle,
PubCity,
PubName,
PageNumbers)
VALUES (
@AuthorName,
@PubYear,
@BookTitle,
@PubCity,
@PubName,
@PageNumbers);
INSERT into Author (
AID,
AuthorNamee,
Affiliation)
VALUES (@AID, @AuthorNamee, @Affiliation)";
MySqlCommand insertCommand = new MySqlCommand(insertStatement, connection);
insertCommand.Parameters.AddWithValue("@AID", package.AID);
insertCommand.Parameters.AddWithValue("@AuthorName", package.AuthorName);
insertCommand.Parameters.AddWithValue("@AuthorNamee", package.AuthorNamee);
insertCommand.Parameters.AddWithValue("@Affiliation", package.Affiliation);
insertCommand.Parameters.AddWithValue("@PubYear", package.PublishYear);
insertCommand.Parameters.AddWithValue("@BookTitle", package.BookTitle);
insertCommand.Parameters.AddWithValue("@PubCity", package.PublisherCity);
insertCommand.Parameters.AddWithValue("@PubName", package.Publisher);
insertCommand.Parameters.AddWithValue("@PageNumbers", package.PageNumbers);
try
{
connection.Open();
insertCommand.ExecuteNonQuery();
return true;
}
catch (SqlException ex)
{
MessageBox.Show(ex.GetType() + ex.Message);
return false;
}
finally
{
connection.Close();
}
}
public class BookCitation
{
public int BookCID { get; set; }
public int AID { get; set; }
public string AuthorName { get; set; }
public string AuthorNamee { get; set; }
public string Affiliation { get; set; }
public DateTime PublishYear { get; set; }
public string BookTitle { get; set; }
public string PublisherCity { get; set; }
public string Publisher { get; set; }
public string PageNumbers { get; set; }
}
如何使用外键添加authord?
1条答案
按热度按时间iyr7buue1#
错误消息意味着作者必须首先存在。插入新作者,检索该新作者的aid,然后插入新书,将书的aid列设置为与刚插入的新作者的检索aid值相同的值