gpt4 book ai didi

sqlite - 如果在SQLite中使用外键,则创建表失败

转载 作者:行者123 更新时间:2023-12-03 15:09:13 25 4
gpt4 key购买 nike

我真的不知道为什么这个PHP代码没有创建三个表。第一个和第二个很好。但是第三个失败了。第三个与第二个非常相似,但是在外键定义之后还有另一个字段。我在这里做错了什么?

$db = new \PDO("sqlite:d:/temp/test_db.sqlite");
$db->exec("PRAGMA foreign_keys = 'ON'");


$statement = $db->query("CREATE TABLE IF NOT EXISTS customers(
id TEXT PRIMARY KEY NOT NULL ,
name TEXT
)");

$statement->execute();

$statement = $db->query("CREATE TABLE IF NOT EXISTS appointments (
id TEXT PRIMARY KEY NOT NULL ,
customer TEXT ,
FOREIGN KEY (customer) REFERENCES customers(id)
)");

$statement->execute();


$statement = $db->query("CREATE TABLE IF NOT EXISTS appointment (
id TEXT PRIMARY KEY NOT NULL ,
customer TEXT ,
FOREIGN KEY (customer) REFERENCES customers(id),
nextfield TEXT
)");

$statement->execute();

最佳答案

根据SQLite grammar规范,nextfield TEXT应该与其他列定义一起放置。 FOREIGN KEYtable-constraint部分相关,应在列定义之后定义:

$statement = $db->query("CREATE TABLE  IF NOT EXISTS appointment (
id TEXT PRIMARY KEY NOT NULL ,
customer TEXT ,
nextfield TEXT,
FOREIGN KEY (customer) REFERENCES customers(id)
)");

关于sqlite - 如果在SQLite中使用外键,则创建表失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48019564/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com