valor update nombre letra incremento incrementar generar cómo código con campo automatico automaticamente autoincrementar autoincrementable android realm

android - update - incremento automatico en mysql



Cómo establecer el incremento automático de la clave primaria en el reino de Android (7)

Bueno, @PrimaryKey solo indica que el campo es una clave. Pero lo configura usted mismo cuando crea un objeto y lo copia en Realm. Considere usar UUID.random (), o incrementarlo manualmente. (como en la respuesta del comentario): Ejemplo de campo de realreación automática de reino

Quiero establecer el incremento automático de la clave principal para mi tabla.

Aquí está mi clase. He establecido la clave principal, pero quiero que sea una clave principal de incremento automático.

public class users extends RealmObject { @PrimaryKey private int id; private long icn; private String name; private String email; private String password; private int phone; public String getName() { return name; } public int getId() { return id; } public void setId(int id) { this.id = id; } public long getIcn() { return icn; } public void setIcn(long icn) { this.icn = icn; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public int getPhone() { return phone; } public void setPhone(int phone) { this.phone = phone; }

}

Gracias por adelantado.


En Kotlin

Mis interfaces

fun getRegistroIdentity(): Int

Mi metodo

class RegistroOver(private val realm: Realm) : RegistroImplementation { override fun getRegistroIdentity(): Int { val registro = realm.where(Registro::class.java).max("id") val result: Int result = if (registro == null) { 1 } else { registro.toInt() + 1 } return result }}

:)


En mi caso personal, configuro id como valor de tiempo Unix. Sé que no es un incremento pero es único 🙃

(int) System.currentTimeMillis() / 1000;


En una transacción, siempre puede acceder de manera confiable a la ID máxima actual, en función de la cual puede incrementarla y utilizarla como base para la siguiente ID.

realm.executeTransaction(new Realm.Transaction() { // must be in transaction for this to work @Override public void execute(Realm realm) { // increment index Number currentIdNum = realm.where(users.class).max(usersFields.ID); int nextId; if(currentIdNum == null) { nextId = 1; } else { nextId = currentIdNum.intValue() + 1; } users user = new users(); // unmanaged user.setId(nextId); //... realm.insertOrUpdate(user); // using insert API } }


Esta es una pregunta antigua y ya contestada, pero quiero publicar otra solución que utilicé. Puedes hacer así:

Realm realm = Realm.getDefaultInstance(); // Realm transaction realm.executeTransactionAsync(new Realm.Transaction() { @Override public void execute(Realm bgRealm) { // Get the current max id in the users table Number maxId = bgRealm.where(users.class).max("id"); // If there are no rows, currentId is null, so the next id must be 1 // If currentId is not null, increment it by 1 int nextId = (maxId == null) ? 1 : maxId.intValue() + 1; // User object created with the new Primary key users user = bgRealm.createObject(users.class, nextId); // Now you can update your object with your data. The object will be // automatically saved in the database when the execute method ends // ... // ... } }


Hay un ejemplo que hace una secuencia para implementar el incremento automático de la id clave primaria:

https://raw.githubusercontent.com/505aaron/realm-migration-example/master/realm/sequencer.js

const sequencer = (realmInstance, schema, props) => new Promise((resolve, reject) => { let saved; try { realmInstance.write(() => { const obj = { ...props }; if (typeof obj.id === ''undefined'') { let seq = realmInstance.objects(''Sequence'').filtered(`name = "${schema}"`)[0]; if (typeof seq === ''undefined'') { seq = realmInstance.create(''Sequence'', { name: schema, value: 0 }); } obj.id = seq.next(); } saved = realmInstance.create(schema, obj, true); resolve({ ...saved }); }); } catch (e) { reject(e); } }); export default sequencer;


Para reaccionar nativo

... // this is the part where you are saving the newItem realm.write(() => { // handle the id let id: any = realm.objects(this.Schema).max("id"); newItem.id = id === undefined ? 1 : id++; realm.create(this.Schema, newItem); resolve(newItem); });