Можно ли заменить или обновить ли ограничение SQL?

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

По сути, мы конвертируем ваш массив в List для доступа к методу contains(). Затем мы разделяем исходную строку foo, чтобы мы могли проверить, существует ли какое-либо из этих значений в исходном массиве.

import java.util.Arrays;
import java.util.List;

class Test {
    public static void main(String[] args) {

        String[] strings = {"1", "2", "10"};
        String foo = "1 2 3 4 5 6 7 8 9 10";

        // We'll use a StringBuilder for this
        StringBuilder newString = new StringBuilder();

        // First, we'll convert our strings array to a List so we have access to the [contains] method
        List<String> stringsList = Arrays.asList(strings);

        // Now, let's split foo into an array, using the space as a delimiter
        String[] foos = foo.split(" ");

        // Loop through each entry of foos and compare to each element in stringsList
        for (int i = 0; i < foos.length; i++) {

            if (stringsList.contains(foos[i])) {
                newString.append(foos[i]);
            }
        }

        System.out.println(newString);
    }
}


Выполнение этого примера приводит к окончательному выводу: 1210

25
задан Juan Mellado 3 May 2012 в 09:46
поделиться

3 ответа

Вы можете отбросить существующее ограничение и добавить новое ограничение с помощью параметра NOCHECK. Это позволит вам добавить ограничение, даже если данные в таблице нарушают ограничение. Проблема с этим будет в том, что вы не сможете обновить существующие записи, не заставив их сначала передать ограничение.

ALTER TABLE SomeTable DROP CONSTRAINT gradeRule
GO
ALTER TABLE SomeTable ADD CONSTRAINT gradeRule ... WITH NOCHECK
GO

Хотя это возможно, обычно не рекомендуется из-за потенциальных проблем с будущими обновлениями данных. .

28
ответ дан 28 November 2019 в 21:19
поделиться

Если вы измените ограничение, все данные в таблице должны соответствовать этому ограничению. Итак, если у вас есть 2 строки данных с «умеренным» и вы попытаетесь изменить ограничение на «легкое», «среднее» и «жесткое», это не позволит вам.

Таким образом, вам придется сделать новое ограничение (легкое, умеренное, среднее , сложно, сложно) или обновить данные до новых значений - умеренный -> средний и т. д.

5
ответ дан 28 November 2019 в 21:19
поделиться

Отбросьте ограничение, а затем добавьте ограничение замены. Вы не можете обновить ограничение в SQL Server по крайней мере.

ALTER TABLE SomeTable DROP CONSTRAINT gradeRule

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

6
ответ дан 28 November 2019 в 21:19
поделиться
Другие вопросы по тегам:

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