Дубликат / Копия записывает в той же таблице MySQL

Это оказалось проблемой конфигурации babel.

Когда я изменил код, чтобы он выглядел следующим образом, он работал:

import path from 'path';
import { Model } from 'objection';

import { BaseModel } from './base.model';

export class Group extends BaseModel {
    static get tableName() {
        return 'groups';
    }

    static get relationMappings() {
        return {
            users: {
                modelClass: path.join(__dirname, 'user.model'),
                relation: Model.ManyToManyRelation,
                join: {
                    from: 'groups.id',
                    through: {
                        from: 'users_groups.group_id',
                        to: 'users_groups.user_id'
                    },
                    to: 'users.id',
                }
            }
        };
    }
}

import path from 'path';
import { Model } from 'objection';

import { BaseModel } from './base.model'

export class User extends BaseModel {
    static get tableName() {
        return 'users';
    }

    static get relationMappings() {
        return {
            groups: {
                modelClass: path.join(__dirname, 'group.model'),
                relation: Model.ManyToManyRelation,
                join: {
                    from: 'users.id',
                    through: {
                        from: 'users_groups.user_id',
                        to:   'users_groups.group_id'
                    },
                    to: 'groups.id'
                }
            }
        };
    }
}
84
задан ROMANIA_engineer 5 February 2015 в 20:53
поделиться

3 ответа

Обычно я использую временную таблицу. Вероятно, это неэффективно с вычислительной точки зрения, но, похоже, работает нормально! Здесь я полностью копирую запись 99, создавая запись 100.

CREATE TEMPORARY TABLE tmp SELECT * FROM invoices WHERE id = 99;

UPDATE tmp SET id=100 WHERE id = 99;

INSERT INTO invoices SELECT * FROM tmp WHERE id = 100;

Надеюсь, это сработает для вас!

130
ответ дан 24 November 2019 в 08:26
поделиться

Вы точно знаете, что сработает ДУБЛИКАТОРНЫЙ КЛЮЧ, поэтому вы можете заранее выбрать МАКС. (ИД) +1 :

INSERT INTO invoices SELECT MAX(ID)+1, ... other fields ... FROM invoices AS iv WHERE iv.ID=XXXXX 
11
ответ дан Ingo 24 November 2019 в 08:26
поделиться

Мне это тоже нужно; Мое решение заключалось в использовании SQLYOG (бесплатная версия) для экспорта желаемой записи как SQL (создает вставку).

Затем я вручную отредактировал это, чтобы удалить идентификатор, поскольку он должен быть автоматически сгенерирован, а затем скопировал вставку в SQLYog для ее выполнения. Это было безболезненно. Я думаю, что многие другие графические интерфейсы MySQL тоже могут это сделать.

Это дает мне запись, которую я могу использовать в тестовых целях в действующей системе.

Теперь у меня есть этот вкладыш для повторного использования, так как таблица переписывается ежедневно.

1
ответ дан 24 November 2019 в 08:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: