作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我在服务器上用来创建表的 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/
我是一名优秀的程序员,十分优秀!