违反外键约束

时间:2020-10-26 06:49:57

标签: postgresql go

我一直收到此错误: 对表“ note”进行插入或更新违反了外键约束“ note_username_fkey”

我有两个表:User和Note。这是创建表语句:

func setup() *sql.DB {
db = connectDatabase()
//Create queries
userTable := `CREATE TABLE IF NOT EXISTS "User"(
    UserID SERIAL unique,
    UserName VARCHAR(50) PRIMARY KEY,
    FirstName VARCHAR(50),
    LastName VARCHAR(50),
    Password VARCHAR(40)
    );`

noteTable := `CREATE TABLE IF NOT EXISTS Note(
    NoteID SERIAL PRIMARY KEY,
    UserID INT,
    UserName VARCHAR(50),
    Title VARCHAR(30),
    Contents VARCHAR(1000),
    DateCreated DATE,
    DateUpdated DATE,
    FOREIGN KEY (UserName) REFERENCES "User"(UserName)
    );`

}

    func createNoteInsertSQL(userID string, userName string, title string, content string, selectSetting string) bool {
var newNote Note
var err error

newNote.UserID, err = strconv.Atoi(userID)
if err != nil {
    log.Fatal(err)
}
newNote.UserName = userName
newNote.Title = title
newNote.Contents = content
date := time.Now()
newNote.DateCreated = date
newNote.DateUpdated = date

query := `INSERT INTO Note (UserID, UserName, Title, Contents, DateCreated, DateUpdated) VALUES ($1, $2, $3, $4, $5, $6) RETURNING NoteID;`
stmt, err := db.Prepare(query)
if err != nil {
    log.Fatal(err)
    return false
}

var noteID int
err = stmt.QueryRow(newNote.UserID, newNote.UserName, newNote.Title, newNote.Contents, newNote.DateCreated, newNote.DateUpdated).Scan(&noteID)
if err != nil {
    log.Fatal(err)
    return false
}

}

有人可以告诉我哪里错了吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

检查尝试在注释表中插入的“用户名”列值在“用户”表中是否已经可用。因为插入查询正在尝试插入“用户”表中不可用的值。