gpt4 book ai didi

mysql - 表中的多值属性

转载 作者:行者123 更新时间:2023-11-29 13:30:47 25 4
gpt4 key购买 nike

我设计了一种发送消息系统,用户可以一次向多个人发送消息。因此消息的接收者属性是多值的。所以我设计了另一个表,名为message_recipients。

这是我的表格:

create table `message`(
`message_id` INT(11) NOT NULL primary key auto_increment,
`sender` VARCHAR(32) NOT NULL,
`topic` VARCHAR(100) NOT NULL,
`content` TEXT NOT NULL,
`message_date` TIMESTAMP NOT NULL ,
`readed` VARCHAR(1) NOT NULL DEFAULT 0,
`deleted_by_sender` VARCHAR(1) NOT NULL DEFAULT 0,
`deleted_by_recipient` VARCHAR(1) NOT NULL DEFAULT 0,
FOREIGN KEY(sender) REFERENCES users(user_name)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;


create table `message_recipients`(
`message_id` INT NOT NULL ,
`recipient` VARCHAR(32) NOT NULL ,
PRIMARY KEY(message_id,recipient),
FOREIGN KEY(message_id) REFERENCES message(message_id) on delete cascade,
FOREIGN KEY(recipient) REFERENCES users(user_name)
)ENGINE=InnoDB default charset=utf8;

当我在 message 表中插入消息时,我需要获取其 message_id 并将其与收件人或多个收件人一起插入到 message_recipients 表中。

这是我的脚本:

insert into `message`(`sender`,`topic`,`content`)
values('me','need help','how to get last inserted row');
select message_id from `message` order by `message_id` desc limit 0,1;

当我获得 message_id 时,我现在可以将其插入到 message_recipients 中,某些用户作为收件人,现在的问题是;有没有更好或更优化的方法?

最佳答案

使用函数 mysql_insert_id() 而不是

select message_id from `message` order by `message_id` limit 0,1;

这是一个内置的 MySQL 方法,可以获取刚刚插入的主键。如果有大量同时插入,上面的 SELECT 语句可能不可靠。

关于mysql - 表中的多值属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19483402/

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