Как предотвращать стоимость, удвоенную в той же линии в момент ввождения или обновления?

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

Tabla Perfiles:
+----+-----------+------+-----+
| ID | IDUsuario | Nick | ... |
+----+-----------+------+-----+

Tabla Relaciones (Follows)
+----+------------+-----------+-----+
| ID | IDSeguidor | IDSeguido | ... |
+----+------------+-----------+-----+

Где "Последователь" и "Продолженный" ссылаются на поле идентификации таблицы, 'Обозначь'

Как я могу способствовать тому, чтобы IDSeguidor отличался от IDSeguido, а именно, чтобы избегать того, чтобы пользователь 'продолжился', если сам (Со стороны SQL)?

1
задан 22.03.2016, 18:43
1 ответ

Самая легкая форма CHECK CONSTRAINT

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

ALTER TABLE [dbo].[Relaciones]  WITH CHECK ADD  CONSTRAINT [CK_Relaciones] CHECK  (([IDSeguidor]<>[IDSeguido]))
GO

ALTER TABLE [dbo].[Relaciones] CHECK CONSTRAINT [CK_Relaciones]
GO

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

2
ответ дан 24.11.2019, 14:42
  • 1
    #191; Это b и # 225; sicamente проверь, пробует ли пользователь продолжаться, если сам? А следовательно я могу читать, оператор и #39; < > и #39; значь " он отличается de" что означает, что, если оба ключа равны, бросать меня и # 225; alg и # 250; n тип ошибки, и #191; Нет? – NaCl 22.03.2016, 19:38
  • 2
    Если оба ключа равны ты не позволять и # 225; вводить линию или изменять существующую одну и бросать и # 225; ошибка – devconcept 22.03.2016, 19:40
  • 3
    Если, я только что протестировал это, и именно то, в чем я нуждаюсь, спасибо! – NaCl 22.03.2016, 19:42
  • 4
    @DatchM ты Можешь использовать TRIGGER tambi и # 233; n, но в действительности он много c и # 243; я говорю boilerplate для чего-то, что его могут добиваться с немногими l и # 237; neas c и # 243; я говорю, как ты можешь оценивать. – devconcept 22.03.2016, 19:51

Теги

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