Как делают внешний ключ Пост-ГРЭС 'на обновлении' и 'на удаляет' работу опций?

Вам нужно взять возвращаемое значение для console.log.

Внутри функции, любой оператор после return оператора никогда не выполняется.

function FirstReverse(str) {
    var str1 = "";

    for (var i = str.length - 1; i >= 0; i--) {
        str1 = str1 + str.charAt(i);
    }
    return str1;
}

console.log(FirstReverse('Hello'));

22
задан meleyal 22 October 2008 в 14:24
поделиться

4 ответа

Прямо от руководство ...

Мы знаем, что внешние ключи запрещают создание заказов, которые не касаются никаких продуктов. Но что, если продукт удален после того, как порядок создается что ссылки он? SQL позволяет Вам обрабатывать это также. Интуитивно, у нас есть несколько опций:

Запрещают удаление продукта, на который ссылаются

, Удаляют заказы также

Что-то еще?

CREATE TABLE order_items (
 product_no integer REFERENCES products ON DELETE RESTRICT,
 order_id integer REFERENCES orders ON DELETE CASCADE,
 quantity integer,
 PRIMARY KEY (product_no, order_id)
);

Ограничение и расположение каскадом удаляют, две наиболее распространенных опции. ОГРАНИЧЬТЕ предотвращает удаление строки, на которую ссылаются. NO ACTION означает, что, если какие-либо строки ссылки все еще существуют, когда ограничение проверяется, ошибка повышена; это - поведение по умолчанию, если Вы ничего не указываете. (Существенное различие между этими двумя вариантами - то, что NO ACTION позволяет проверке быть задержанной до позже в транзакции, тогда как ОГРАНИЧИВАЮТ, не делает.) КАСКАД указывает, что, когда строка, на которую ссылаются, удалена, строка (строки), ссылающаяся на нее, должна быть автоматически удалена также. Существует две других опции: ПУСТОЙ УКАЗАТЕЛЬ НАБОРА и ЗНАЧЕНИЕ ПО УМОЛЧАНИЮ НАБОРА. Они заставляют столбцы ссылки быть установленными на пустые указатели или значения по умолчанию, соответственно, когда строка, на которую ссылаются, удалена. Обратите внимание, что они не извиняют Вас от наблюдения никаких ограничений. Например, если действие укажет ЗНАЧЕНИЕ ПО УМОЛЧАНИЮ НАБОРА, но значение по умолчанию не удовлетворило бы внешний ключ, то операция перестанет работать.

Аналогичный НА УДАЛЯЮТ существует также ON UPDATE, который вызывается, когда столбец, на который ссылаются, изменяется (обновленный). Возможные действия являются тем же.

редактирование: Вы могли бы хотеть смотреть на этот связанный вопрос: , Когда/Почему использовать Расположение каскадом в SQL Server? . Понятия позади вопроса/ответов являются тем же.

28
ответ дан 29 November 2019 в 05:24
поделиться

У меня есть база данных PostGreSQL, и я использую На, Удаляют, когда у меня есть пользователь, которого я удаляю из базы данных, и я должен удалить, это - информация от другой таблицы. Это, которое способы, которыми я должен сделать только 1, удаляют и FK, который имеет НА, удаляет, удалит информацию из другой таблицы.

можно сделать то же с НА Обновлении. Если Вы обновите таблицу, и поле имеют FK с На Обновлении, если изменение будет внесено на FK, то Вы будете замечены на таблице FK.

0
ответ дан 29 November 2019 в 05:24
поделиться

То, что говорит Daok, верно..., что это может быть довольно удобно. С другой стороны, имеющие вещи происходят автоволшебно в базе данных, может быть настоящая проблема, особенно когда дело доходит до устранения данных. Возможно, что в будущем кто-то будет рассчитывать на то, что FKs обычно предотвращают удаление родителей, когда существуют дети и не понимают, что Ваше использование На Удаляет Каскад не, только не предотвращает удаление, это заставляет огромные объемы данных в десятках других таблиц уйти благодаря водопаду расположения каскадом, удаляет.

комментарий @Arthur.

, Чем более часто "скрытые" вещи происходят в базе данных, тем менее вероятно это становится этим, у любого когда-либо будет хороший дескриптор на том, что продолжается. Триггеры (и это - по существу триггер), может вызвать мое простое действие удаления строки, чтобы иметь широкие последствия всюду по моей базе данных. Я выпускаю Оператор удаления, и 17 таблиц затронуты с каскадами триггеров и ограничений, и ни одно из этого не сразу очевидно для выпускающего команды. OTOH, Если я помещаю удаление родителя и всех его детей в процедуре затем, это очень легко и ясно для любого видеть ТОЧНО, что собирается произойти, когда я даю команду.

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

0
ответ дан 29 November 2019 в 05:24
поделиться

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

0
ответ дан 29 November 2019 в 05:24
поделиться
Другие вопросы по тегам:

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