MariaDBNode.js-Connector插入一个值并使用默认值

wljmcqd8  于 2023-01-26  发布在  Node.js
关注(0)|答案(1)|浏览(124)

我有一个与Express.js后端结合的MariaDB数据库,因此使用MariaDB提供的Node.js Connector。我使用如下所示的表初始化了一个数据库:

CREATE TABLE IF NOT EXISTS `Threads` (
    `id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
    `title` TINYTEXT NOT NULL,
    `post` TEXT NOT NULL,
    `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
    `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL,
    PRIMARY KEY (`id`)
);

使用我的后端中的Node. js-Connector,我想向这个表中插入一些数据,并使用 "created_at""updated_at" 的默认值。
我在想这样的事:

const insertThreadQuery = 'INSERT INTO Threads VALUES (?, ?, ?, ?, ?)';
con = await pool.getConnection();
const result = await con.query(insertThreadQuery, [null, "title", "post", null, null]);

这显然会抛出一个错误,告诉我不能为这些值((conn=4, no: 1048, SQLState: 23000) Column 'updated_at' cannot be null sql: INSERT INTO Threads VALUES (?, ?, ?, ?, ?) - parameters:[null,'title','post',null,null])插入null
我的问题是:如何像前面显示的那样插入一个条目,但不插入"null",而是插入其他内容,以便我的列 * created_at * 和 * updated_at * 使用默认值?

hgc7kmma

hgc7kmma1#

如果要使用DEFAULT值,则传递DEFAULT而不是NULL。

const insertThreadQuery = 'INSERT INTO Threads VALUES (NULL, ?, ?, DEFAULT, DEFAULT)';
con = await pool.getConnection();
const result = await con.query(insertThreadQuery, ["title", "post"]);

相关问题