После того, как принятый ответ Гильермо был написан, переход CSS-перехода от 3 апреля 2012 года изменил поведение перехода видимости, и теперь можно решить эту проблему короче, без использования задержки перехода:
.myclass > div {
transition:visibility 1s, opacity 1s;
visibility:hidden; opacity:0
}
.myclass:hover > div
{ visibility:visible; opacity:1 }
Время выполнения, указанное для обоих переходов, должно быть, как правило, одинаковым (хотя немного более длительное время для видимости не является проблемой). Для текущей версии см. Мой блог http://www.taccgl.org/blog/css-transition-visibility.html#visibility-opacity .
W.r.t. название вопроса «Переходы на дисплее: свойство» и в ответ на комментарии Rui Marques и josh к принятому ответу: это решение работает в тех случаях, когда это не имеет значения, если свойство отображения или видимости (как это, вероятно, имело место в этом вопросе). Он не будет полностью удалять элемент как отображение: none, просто сделать его невидимым, но он все еще остается в потоке документа и влияет на положение следующих элементов. Переходы, которые полностью удаляют элемент, похожий на отображение: ни один не может быть выполнен с использованием высоты (как указано другими ответами и комментариями), максимальной высотой или краем-сверху / снизу, но также см. . Как я могу перейти на высоту: 0 ; высота: авто; используя CSS? и мой блог http://www.taccgl.org/blog/css_transition_display.html .
В ответ на комментарий GeorgeMillo: как свойства, так и необходимы оба перехода: свойство opacity используется для создания анимации затухания и затухания и свойства видимости, чтобы элемент не реагировал на события мыши. Переходы необходимы для непрозрачности визуального эффекта и видимости, чтобы задержать скрытие до тех пор, пока исчезновение не завершится.
Нет возможности автоматически создавать внешние ключи в 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)
Еще один способ - сбросить структуру таблицы, изменить ее имя в дампе и снова загрузить ее:
pg_dump -s -t old databases | sed 's/old/new/g' | psql