Intereting Posts
Создание динамической таблицы при нажатии кнопки в SQLite Лучший способ получить последний индексный символ в SQL 2008 Преобразование varchar в datetime в sql, который имеет миллисекунду Модели Django и отношения первично-внешних ключей SQLException: количество значений не одинаково Удалил мой .mdf-файл в App_Data в попытке обновить базу данных. Сейчас проект нарушен MySQL: как программно определить отношения внешнего ключа? ORA-01591 – данные о удалении оракула из таблицы удаленного SQL-сервера Как я могу использовать предложение OUTPUT оператора INSERT для получения значения идентификатора? имеет ли миллионы таблиц и миллионы строк внутри них обычную практику в разработке баз данных MySQL? Преобразование чисел в слова в результат MYSQL! Использование запроса Производительность и читаемость REGEXP_SUBSTR vs INSTR и SUBSTR Оптимизация SQL-запросов во избежание временной таблицы Использование случая, когда для вставки значений org.dbunit.dataset.NoSuchTableException, но таблица существует

Если данные из другой таблицы помещены в контрольное ограничение

У меня таблица table table1 с colum say checkColumn,

теперь я хочу поместить контрольное ограничение в поле checkColumn, которое позволит только данные, которые есть в другой таблице, сказать таблицу 2 для некоторых условий,

Я пробовал это так,

ALTER TABLE table1 ADD CHECK (checkColumn=(select field1 from table2 where field2='ABC') ) //the select is not scalar 

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

К сожалению, вы не можете вставить Sub Query в контексте ограничения проверки. Но здесь я хотел бы дать предложение, вы можете использовать любой триггер или функцию. Вы можете использовать ограничение внешнего ключа для проверки зависимости данных. Я хотел бы поделиться одним примером с функцией. например

 CREATE FUNCTION fn_Check_Rollnumber ( @Rollnumber INT ) RETURNS VARCHAR(10) AS BEGIN IF EXISTS (SELECT Rollnumber FROM Table_Student WHERE Rollnumber = @Rollnumber) return 'True' return 'False' END 

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

 ALTER TABLE Table_Fees WITH CHECK ADD CONSTRAINT CK_RollCheck CHECK (fn_Check_Rollnumber(Rollnumber) = 'True')