На чем MySQL является значением по умолчанию, УДАЛЯЮТ поведение?

List<T> не происходит от Collection<T> - это действительно, однако, реализует ICollection<T>. Это было бы лучшим выбором типа возврата.

Что касается new List<int>(some collection<int>) вопрос - это частично зависит от того, каков набор. Если это реализует ICollection<T> (во время выполнения) затем, конструктор может использовать Count свойство для создания списка с правильной начальной способностью прежде, чем выполнить итерации через него и добавить каждый объект. Если это не реализует ICollection<T> затем, это просто эквивалентно:

List<int> list = new List<int>();
foreach (int x in otherCollection)
{
    list.Add(x);
}

Все еще хороший иметь в удобном конструкторе, но не чрезвычайно эффективное - это не может быть, действительно.

я не полагаю, что конструктор делает что-либо хитрость для массивов, которые она потенциально могла - использование Array.Copy или безотносительно просто скопировать партию сразу вместо итерации все же. (Аналогично, если бы это был другой List<T>, то это могло бы достигнуть вспомогательный массив и копию настолько непосредственно.)

65
задан River 5 November 2017 в 20:46
поделиться

1 ответ

Да, это правильно:

НЕТ ДЕЙСТВИЙ : [...] InnoDB отклоняет операцию удаления или обновления для родительской таблицы.

RESTRICT : отклоняет удаление или обновление операция для родительской таблицы. Указание RESTRICT (или NO ACTION) - это то же самое, что и без ON DELETE или Предложение ON UPDATE. [...]

Очевидно NO ACTION и RESTRICT являются синонимами. Кроме того, поскольку они используются всякий раз, когда нет предложения ON DELETE / UPDATE , это поведение по умолчанию.

SET NULL : удалить или обновить строку из родительской таблицы и установить столбец или столбцы внешнего ключа в дочерняя таблица в NULL. [...]

Внешний столбец установлен в NULL, при условии, что он не объявлен как NOT NULL (или InnoDB не разрешит удаление или обновление).

CASCADE : Удалить или обновить строку из родительская таблица и автоматически удалять или обновлять соответствующие строки в дочерней таблице. [...]

Каскад удаляет (или обновляет) внешний столбец.

УСТАНОВИТЬ ПО УМОЛЧАНИЮ : Это действие распознается парсером, но InnoDB отклоняет определения таблиц, содержащие ON DELETE УСТАНОВИТЬ ПО УМОЛЧАНИЮ или НА ОБНОВЛЕНИИ УСТАНОВИТЬ ПО УМОЛЧАНИЮ пункты.

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

80
ответ дан 24 November 2019 в 15:31
поделиться
Другие вопросы по тегам:

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