Рейтинг:
2
OriginalGriff
0x01AA означало, что при установлении отношения внешнего ключа между столбцом имени пользователя таблицы регистрации и записями имени пользователя Pers_D, Edu_D и Dep_s вы можете добавить ограничение на каскад удаления: SQL Server: внешние ключи с каскадным удалением[^]
Что происходит тогда, когда вы удаляете строку из главной таблицы-Signup-система автоматически удалит все строки из зависимых таблиц для вас:
DELETE FROM Signup WHERE UserName = @UserName
Сделает это автоматически за вас.
И не используйте как с DELETE! (Или даже обновить-сохранить как для SELECT, где это возможно) это очень опасно.
Предположим, вы хотите удалить пользователя "старый" и говорите:
DELETE FROM Signup WHERE UserName LIKE '%old%'
Пользователь" старый " пойдет - но так же пойдут и "смелый"," Олдсмобиль"... "Держатель Стека".
Лайк опасен - будьте очень осторожны там, где вы его используете!
Я бы также предположил, что использование имени пользователя в качестве ключевого поля-плохая идея - вместо этого используйте значение ID, и это сэкономит место, сэкономит время и позволит пользователю изменить свое имя без необходимости обновлять все связанные записи.
F-ES Sitecore
- это очень опасно."
Не так опасно, как каскадное удаление :)
OriginalGriff
Каскадные удаления опасны, да - но и вполовину не так плохи, как каскадные удаления с подобными! :смеяться:
Stack Holder
с
Удалить * из регистрации, Где UserName = @Abuzar
возникли ошибки
Msg 102, Уровень 15, Состояние 1, Строка 2
Неправильный синтаксис рядом с '*'.
OriginalGriff
Извините, ошиблись базой данных! Просто уберите"*".
Stack Holder
тогда ошибка есть:
Msg 547, Уровень 16, Состояние 0, Строка 1
Оператор DELETE конфликтовал с ссылочным ограничением "FK_Pers_D". Конфликт произошел в базе данных "Online_Admission_Systemz", таблице" dbo.Pers_D", столбце "UserName".
Stack Holder
Я работаю над небольшим проектом в университете, и у нас больше нет времени, так как мы должны представить его в течение нескольких дней. Я в напряжении, пожалуйста, ответьте мне быстро.
OriginalGriff
Тогда подумайте о том, что вы пытаетесь сделать вместо того, чтобы просто слепо следовать инструкциям!
Конечно, я не знаю, какая из ваших таблиц содержит главную ссылку, а какая-внешние ключи. Поэтому используйте мастер-таблицу вместо регистрации...
Stack Holder
Регистрация-это главная таблица (означает, что имя пользователя - это PK), а во всех других таблицах имя пользователя-FK.
OriginalGriff
Нет, первичный ключ просто сообщает SQL, через какой столбец вы собираетесь получить доступ к таблице, поэтому он должен оптимизировать индексы для этого столбца. Каждый стол должен иметь ПК.
Какая бы таблица ни была главной, она является той, к которой относятся все остальные внешние ключи.
Stack Holder
нераскрыто, но спасибо за ваши усилия.
kaushik ahir
это не select query, это Delete query, поэтому, пожалуйста, следуйте synatax: delete from table name where unm=@unm