Итак, если «Тип» равен 0, я должен иметь возможность добавить своего человека в таблицу B, иначе нет, но столбец «Тип» не является и не должен находиться в таблице B. Ограничение проверки SQL на несколько таблиц
ответ
Вы можете сделать это с ограничением внешнего ключа и некоторыми обманами.
Во-первых, создать уникальное ограничение на TableA
как для type
и person
:
alter table TableA add constraint unq_TableA_type_person on TableA(type, person);
Это позволяет набор для настройки внешнего ключа. Однако вам нужна колонка type
. Для этого вы можете использовать вычисляемый столбец:
alter table TableB add type_for_a as (0); -- it is always 0
Теперь просто использовать ограничение внешнего ключа:
alter table TableB add constraint fk_tableA_type_person
foreign key (type_for_a, person) references tableA(type, person);
вуаля! У вас есть ограничение, без необходимости писать код.
я немного запутался ... Так что в основном на' изменить таблицу TableB добавить ограничение fk_tableA_type_person иностранный ключ (type_for_a, человек) reference tableA (тип, лицо); 'часть кода, я делаю внешний ключ с двумя столбцами ?? – bethe
не существует чего-то более простого idk ... 'псевдокод' IF TABLE A CELL X = 0 LET IT PASS IN, OTHERWISE DON'T' – bethe
Я думаю, что забыл упомянуть, что« Тип »не существует в другая таблица – bethe
CREATE TABLE T1 (TypeID INT NOT NULL, people VARCHAR(50));
GO
CREATE TABLE T2 (people VARCHAR(50));
GO
-- creating trigger to insert on the behalf when there is a particular type
CREATE TRIGGER dbo.AfterInsertTrigger
ON T1
AFTER INSERT
AS
BEGIN
SET NOCOUNT ON;
declare @id int,
@someval char(1)
insert into dbo.T2
select i.people FROM Inserted i
where i.TypeID=0 -- checks only when the id is 0
END
GO
-- inserting people with different id s into Table1
INSERT T1 (TypeID, people) SELECT 1, 'A';
INSERT T1 (TypeID, people) SELECT 0, 'B';
GO
--selecting from tables see what got affected.
select * from T1
select *from T2
--Clean up
DROP TABLE T2;
DROP TABLE T1;
GO
- 1. Ограничение проверки SQL на столбец
- 2. PostgreSQL: ограничение, которое влияет на несколько таблиц
- 3. Ограничение проверки SQL-запросов
- 4. Ограничение проверки Oracle SQL
- 5. Ограничение проверки SQL
- 6. Одно ограничение проверки или несколько ограничений проверки?
- 7. SQL-запрос на несколько таблиц
- 8. sql: вставить объект на несколько таблиц
- 9. Ограничение проверки Sql Server 2008
- 10. Несколько таблиц sql выберите
- 11. SQL Несколько таблиц Вставка
- 12. SQL несколько таблиц с
- 13. Oracle SQL добавить ограничение проверки на нескольких уровнях таблицы
- 14. SQL запросы несколько таблиц
- 15. Запросов SQL несколько таблиц
- 16. SQL присоединиться несколько таблиц
- 17. Query Несколько таблиц SQL
- 18. Ограничение проверки SQL на столбец, ссылающееся на другие столбцы
- 19. DynamoDB - ограничение на количество таблиц на счет
- 20. SQL Server - многократная аренда, ограничение использования таблиц
- 21. SQL: Проверить ограничение зависит от других таблиц
- 22. Linq-на-SQL несколько таблиц запроса
- 23. SQL запрос на выборку, несколько таблиц
- 24. SQL запрос на Нортвинд несколько таблиц
- 25. Ограничение на объединение нескольких таблиц
- 26. ограничение ссылочной из одной таблицы на несколько таблиц
- 27. Несколько таблиц на одном объекте
- 28. Как сбросить ограничение проверки в sql
- 29. провайдер типа sql, ограничение до нескольких таблиц
- 30. проверочное ограничение на несколько столбцов
'Вместо of' триггер может быть полезным для вас –