gpt4 book ai didi

android.database.sqlite.SQLiteException : near "ON": syntax error (code 1)

转载 作者:行者123 更新时间:2023-11-29 21:01:11 32 4
gpt4 key购买 nike

这是我在服务器上用来创建表的 MySQL 代码...

CREATE TABLE brand_names (
id int(7) unsigned NOT NULL AUTO_INCREMENT,
brand_name varchar(255) NOT NULL,
parent_company_id int(7) NOT NULL DEFAULT '0',
last_modified_on timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id),
UNIQUE KEY brand_name (brand_name),
FULLTEXT KEY name (brand_name)
) ENGINE=MyISAM AUTO_INCREMENT=225 DEFAULT CHARSET=latin1

我正在尝试通过使用...在 Android 中复制同一张表

CREATE TABLE brand_names (
_id integer PRIMARY KEY AUTOINCREMENT,
brand_name text NOT NULL,
parent_company_id integer NOT NULL DEFAULT '0',
last_modified_on datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE SET DEFAULT
)

但是,我遇到了这个异常......

android.database.sqlite.SQLiteException: near "ON": syntax error (code 1): , while compiling: CREATE TABLE brand_names (_id integer PRIMARY KEY AUTOINCREMENT, brand_name text NOT NULL, parent_company_id integer NOT NULL DEFAULT '0', last_modified_on datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE SET DEFAULT);

所以 ON 部分似乎有问题。 (注意 - 我试图用 ON 子句实现的是让它在更新行时, last_modified_on 日期时间将自动设置为当前时间。

我看过这个SQLite page ,看起来我的语法是正确的,但显然有些地方不对,所以我有点难过。谁能帮忙解决一下?

最佳答案

正确的是,

CREATE TABLE brand_names (
_id integer PRIMARY KEY AUTOINCREMENT,
brand_name text NOT NULL,
parent_company_id integer NOT NULL DEFAULT '0',
last_modified_on datetime NOT NULL DEFAULT CURRENT_TIMESTAMP);

您最终使用的是 ON UPDATE SET DEFAULT,这是错误的语法。

last_modified_on 日期时间将使用 DEFAULT CURRENT_TIMESTAMP 自动设置为当前时间。

你从 SQLite doc 看到了什么与你想要达到的完全不同。

假设您有一个 id 为 parent_company_id 的父表,以下查询将起作用 -

CREATE TABLE brand_names(_id integer PRIMARY KEY AUTOINCREMENT,
brand_name text NOT NULL, parent_company_id integer NOT NULL DEFAULT '0',
last_modified_on datetime NOT NULL REFERENCES parent(parent_company_id)
ON UPDATE SET DEFAULT);

这将更新父记录的 parent_company_id(外键约束的父键)列,而不会破坏两个表 parent 之间的引用完整性品牌名称

ON UPDATE 操作仅在父键的值被修改使得新父键值不等于旧值时才会执行。因此,这用于配置在修改现有行的父键值(更新时)时发生的操作。它们与 SQLite 数据库中的每个外键相关联。

关于android.database.sqlite.SQLiteException : near "ON": syntax error (code 1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26058984/

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