我有一个包含用户表的MySQL数据库。该表的主键是'userid',它被设置为自动递增字段。
我想做的是,当我向表中插入新用户时,要使用自动增量在另一个字段“ default_assignment”的“用户ID”字段中创建的值。
例如
我想要这样的声明:
INSERT INTO users ('username','default_assignment') VALUES ('barry', value_of_auto_increment_field()) 因此我创建了用户“ Barry”,生成的“ userid”为16(例如),但我还希望“ default_assignment”具有相同的值16。
有什么办法可以做到这一点?
谢谢!
无需创建另一个表,并且max()会因表的auto_increment值而出现问题,请执行以下操作:
CREATE TRIGGER trigger_name BEFORE INSERT ON tbl FOR EACH ROW BEGIN DECLARE next_id INT; SET next_id = (SELECT AUTO_INCREMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='tbl'); SET NEW.field=next_id; END 我声明next_id变量是因为通常它将以其他方式使用(*),但是您可以直接使用new.field =(select ...)
() To auto-name an image: SET NEW.field = CONCAT('image_', next_id, '.gif'); () To create a hash: SET NEW.field = CONCAT( MD5( next_id ) , MD5( FLOOR( RAND( ) *10000000 ) ) );来源:stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。