gpt4 book ai didi

mysql - 如何强制插入特定字段?

转载 作者:行者123 更新时间:2023-11-29 19:54:00 25 4
gpt4 key购买 nike

给出下表:

DROP TABLE IF EXISTS my_table;
CREATE TABLE IF NOT EXISTS my_table(
id INT NOT NULL,
timestamp TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP(3) NOT NULL,
data BLOB NULL,
PRIMARY KEY (id)
);

我可以在上面插入:

INSERT INTO my_table (timestamp, data) VALUES
('2014-07-11 11:25:48.185', LOAD_FILE('sql/file.bin'));

在上面的插入中,我没有被强制插入 id 字段。

如何创建表 (my_table) 以防止没有 id 的插入?

我希望每次插入(提供id),例如:

INSERT INTO my_table (id, timestamp, data) VALUES
(7, '2014-07-11 11:25:48.185', LOAD_FILE('sql/file.bin'));

我想 NOT NULL 就在那里。

最佳答案

要防止插入 ID 为空值(或未传递值),只需按照您的定义将该列定义为 NOT NULL 即可。

我看不到您的示例是如何工作的(即仅插入到(timestamp, data)中)。

现在,另一个带有触发器的表插入到该表中这一事实不会对该表的 ID 列产生任何影响。如果将其定义为AUTO_INCRMENT,则每当插入新行时,ID 都会自动获取一个新值,该值将完全独立于第一个表的任何数据。

您可以拥有任意数量的带有自动递增字段的表,每个表运行不同的序列(因此它们的编号将完全独立)。

总结一下:

CREATE TABLE IF NOT EXISTS my_table(
id INT NOT NULL AUTO_INCREMENT ,
timestamp TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ,
data BLOB NULL ,
PRIMARY KEY (id)
);

关于mysql - 如何强制插入特定字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40743007/

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