Я могу выключить автоматическое слияние в Подрывной деятельности?

Нет возможности автоматически создавать внешние ключи в CREATE TABLE ... LIKE ....

Для документация:

LIKE source_table [like_option ...]

Непустые ограничения всегда копируются к новой таблице. Ограничения CHECK будут скопированы только в том случае, если указано ВКЛЮЧЕНИЕ КОНСТРУКЦИЙ [...]

Индексы, ограничения PRIMARY KEY и UNIQUE в исходной таблице будут созданы в новой таблице только в том случае, если указано предложение INCLUDING INDEXES .

blockquote>

На практике это легко с помощью инструментов графического интерфейса. Например, в PgAdmin III:

  • объявление копирования (DDL) из source_table для запроса инструмента (ctrl-e),
  • отредактируйте объявление,
  • выполнить sql.

В сценарии SQL вы можете использовать следующую функцию. Важное предположение: внешние ключи исходной таблицы имеют правильные имена, то есть их имена содержат имя исходной таблицы (что типичная ситуация).

create or replace function create_table_like(source_table text, new_table text)
returns void language plpgsql
as $$
declare
    rec record;
begin
    execute format(
        'create table %s (like %s including all)',
        new_table, source_table);
    for rec in
        select oid, conname
        from pg_constraint
        where contype = 'f' 
        and conrelid = source_table::regclass
    loop
        execute format(
            'alter table %s add constraint %s %s',
            new_table,
            replace(rec.conname, source_table, new_table),
            pg_get_constraintdef(rec.oid));
    end loop;
end $$;

Пример использования:

create table base_table (base_id int primary key);
create table source_table (id int primary key, base_id int references base_table);

select create_table_like('source_table', 'new_table');

\d new_table

   Table "public.new_table"
 Column  |  Type   | Modifiers 
---------+---------+-----------
 id      | integer | not null
 base_id | integer | 
Indexes:
    "new_table_pkey" PRIMARY KEY, btree (id)
Foreign-key constraints:
    "new_table_base_id_fkey" FOREIGN KEY (base_id) REFERENCES base_table(base_id)

19
задан Bjorn Reppen 11 September 2008 в 10:40
поделиться

3 ответа

Лучший способ вокруг этого состоит в том, чтобы обучить разработчиков. После того, как Вы сделаете обновление в TortoiseSVN, он показывает Вам список затронутых файлов. Просто двойной щелчок по каждому файлу даст Вам разность между ними. Затем Вы сможете видеть то, что изменилось между Вашей версией и последней версией репозитория.

6
ответ дан 30 November 2019 в 04:08
поделиться

Вот прием для TortoiseSVN:

, Как выключить “auto-merge” в Подверсии

, Прием для svn.exe должен установить svn внешний различный инструмент на программу, которая постоянно перестанет работать.

svn --diff-cmd=/bin/false

, Если внешняя различная программа перестала работать, svn приходит к заключению, что конфликт неразрешим и не объединил бы его.

10
ответ дан 30 November 2019 в 04:08
поделиться

Я предложил бы, чтобы Вы учились работать с естественной моделью Subversion если вообще возможный. На практике мы находим, что конфликты редки, и тип логического конфликта, о котором Вы говорите почти не существующий (я не могу вспомнить экземпляр за прошлые 4 года в нашем репозитории).

Члены команды должны регистрация изменяться в максимально маленьком масштабе (при поддержании правильности) вместо того, чтобы обработать в пакетном режиме целую дневную работу, чтобы просто регистрировать его однажды. Это уменьшит возможность продвижения на чужую работу.

, Если Вы обеспокоены приблизительно конкретным изменением, что делаете Подверсию, действительно обеспечивает блокировка механизм, чтобы позволить Вам предотвратить другие изменения в файле. Посмотрите Красная книга главы по блокировка .

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

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