表结构:
{ id: { type: DataTypes.INTEGER.UNSIGNED, autoIncrement: true, primaryKey: true, allowNull: false }, enid: { type: DataTypes.STRING(100), unique: true, allowNull: false }, name: { type: DataTypes.STRING(100), unique: true, allowNull: false }, update_time: { type: DataTypes.DATE, defaultValue: DataTypes.NOW, allowNull: false }, index: { type: DataTypes.TINYINT.UNSIGNED, defaultValue: 0, allowNull: false }, pid: { type: DataTypes.INTEGER.UNSIGNED, allowNull: true }, logo: { type: DataTypes.STRING(200), allowNull: true }, view: { type: DataTypes.INTEGER.UNSIGNED, defaultValue: 0, allowNull: false }, intro: { type: DataTypes.STRING(1000), allowNull: false },}
同步到数据库后:
第一次插入数据正常:
插入第二条数据就会报错:
(数据: { enid: 'ddfffff', name: 'Ddfffff', index: 7, pid: null, intro: 'aaaaaaaaaaaaaaaaa' })
大佬们看看是哪里的问题??
第二次插入数据的时候如果添加id: 1,就能插入成功,否则失败!
自增的数据是不需要专门声明的啊。我看了下我以前的sequelize项目:
// 严格模式'use strict';// 从sequelize模块选择性导入Modelconst { Model } = require('sequelize');// 模型导出module.exports = (sequelize, DataTypes) => { class Prebook extends Model { // 用于定义关联的辅助方法,不是Sequelize生命周期的一部分,但models/index会自动调用此方法 static associate(models) { /** * @外键 * @资源实体id resourceId * @发起人id userId */ // 仪器预约表-资源实体 Prebook.belongsTo(models.Resource, { // 调用名称为“resource” as: 'resource', targetKey: 'id', foreignKey: { name: 'resourceId', allowNull: false, }, }); models.Resource.hasMany(Prebook, { // hasMany的话,习惯的调用名称为复数形式 as: 'prebooks', sourceKey: 'id', foreignKey: { name: 'resourceId', allowNull: false, }, }); // 仪器预约表-发起人 Prebook.belongsTo(models.User, { // 调用名称为“user” as: 'user', targetKey: 'id', foreignKey: { name: 'userId', allowNull: false, }, }); models.User.hasMany(Prebook, { // hasMany的话,习惯的调用名称为复数形式 as: 'prebooks', sourceKey: 'id', foreignKey: { name: 'userId', allowNull: false, }, }); }; }; /** * 仪器预约表 * @年月日时 time:DATE * @预约有效性 validity:BOOLEAN * 0:待审 * 1:有效 * * @外键 * @资源实体id resourceId * @发起人id userId */ Prebook.init({ time: { type: DataTypes.DATE, allowNull: false, }, validity: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: 1, }, }, { sequelize, // 模型名称为Prebook modelName: 'Prebook', }); return Prebook;};
就拿这张表来说,它是有默认的自增主键的,sequelize给的。不过在声明这张表的时候,自增主键是不写进去的。
另外,我后来用prisma了,简洁大方,效率高,还可以自己生成迁移,真的,回不来了。我用了prisma之后再也没用过sequelize。
问题内容: 我正在尝试将数据插入为主数据ID,该数据在MySQL数据库中具有一个字母数字值和两个数字值。该数据将自动递增生成数字,但字母数字值将是固定的。像D1,D2 .... D54,D55,D56等。这里,“ D”始终相同,但是数字将自动递增。有什么办法吗? 问题答案: 首先, 不建议这样做 ,就像其他评论一样,您可以动态生成此id值。 但是,尽管如此,至少有两种方法可以实现: 或多或少可靠的
我正在使用java中的MySQL库执行一个查询。在我的数据库结构中,有一列名为(主键,非空且自动递增)。通常在每次插入查询中,我都将值设置为,在查询执行后,它会增加最后一个id,但在java中这样做会给我异常。 这就是代码: 如何使用自动增量ID执行查询?
问题内容: 我创建了一个具有主键的表并启用了该表,如何使用MYSQL ? 这是我使用的查询,我尝试使用“”和“ 1”作为第一个值,但是它不起作用。 问题答案: 为了利用列的自动递增功能,在插入行时不要为该列提供值。数据库将为您提供一个值。
我有一个表,我试图插入新行,但有一个列不会自动递增自己。有没有办法编写一个INSERT命令,根据列中的最高值自动递增该列?
问题内容: 我正在尝试更改没有主键或auto_increment列的表。我知道如何添加主键列,但我想知道是否有可能自动将数据插入主键列(我已经在数据库中有500行,并希望为其提供ID,但我不想手动执行) 。有什么想法吗?非常感谢。 问题答案: 在我的测试中,添加列的语句可以正常工作: 在为测试目的而创建的临时表上,以上语句创建了该 列,并为该表中的每个现有行插入了自动递增值,从1开始。
firebaseDatabase=firebaseDatabase.getInstandatabaseReference=firebaseDatabase.getReference()Query Query=databaseReference.child(“ticket_detail”).orderbychild(“ticket_no”).limittoLast(1);AddListenerFor