Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何参考sqlite_master';谁的领域?_Sql_Sqlite - Fatal编程技术网

如何参考sqlite_master';谁的领域?

如何参考sqlite_master';谁的领域?,sql,sqlite,Sql,Sqlite,可以参考sqlite\u master表的字段name?大概是这样的: CREATE TABLE metadata ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT REFERENCES sqlite_master (name) ON DELETE CASCADE UNIQUE NOT NULL,

可以参考
sqlite\u master
表的字段
name
?大概是这样的:

CREATE TABLE metadata (
    id          INTEGER PRIMARY KEY AUTOINCREMENT,
    name        TEXT    REFERENCES sqlite_master (name) ON DELETE CASCADE
                        UNIQUE
                        NOT NULL,
    description TEXT
);

当我尝试执行此脚本时,然后返回错误消息
SQL逻辑错误
。我需要创建一个具有可读性的表描述的表。我想在我的表中将服务表的字段
name
作为外键
sqlite\u master

发生的事情如下:

用作父键的列需要是父表的主键,或者具有唯一的索引/约束。
sqlite\u master
表的name列没有这样的内容(您不能在其上添加索引),因此无法使用它。我不知道为什么在创建表时会出现逻辑错误,而不是像在普通表上一样在插入时出现外键不匹配错误,不过:

sqlite> pragma foreign_keys = on;
sqlite> create table parent(id integer primary key, name text not null);
sqlite> insert into parent(name) values ('Bob');
sqlite> create table child(id integer primary key, name text references parent(name));
sqlite> insert into child(name) values ('Bob');
Error: foreign key mismatch - "child" referencing "parent"
sqlite> create unique index parent_idx_name on parent(name);
sqlite> insert into child(name) values ('Bob');
sqlite>

如果像默认情况下一样禁用了外键强制,您尝试的内容将被接受,它只是不起任何作用,如果您稍后打开FKs并尝试处理表,则会引发错误。

您的代码运行:。这回答了你的问题吗?@GordonLinoff不,它在语法上是正确的,但不适用于内部表
sqlite\u master
,其中列出了所有数据库表。“不起作用”是什么意思?@Shawn它的意思是返回错误,当我尝试运行此sql脚本时。如果没有
引用sqlite\u master(name)
它的工作。@上面的Shawn脚本,错误
SQL逻辑错误
。您也无法在
sqlite\u master
事件上创建触发器,因此无法以这种方式更新表。我想你运气不好。谢谢你,现在我明白了。我将创建没有外来关系的
名称文本