Проверьте по таблице имя поля: возможное_значение, если в нем есть значение других таблиц, и заполните поле - PullRequest
0 голосов
/ 05 июня 2018

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

Ниже приведено тестовое поле, которое соответствует тому, что я хочу сделать.

Ожидаемый результат:

Table foo
a  | b | c      | check
a  | 1 | foobar |
b  | 1 | foobaz |
ab | 1 | foofoo | a c

Table bar
a  | x      | y  | check
a  | foobar | 3  |
b  | foobaz | 2  |
ab | foofoo | 2  | x

Предопределенная проверка выглядит следующим образом:

table_name | field | permittedvalue
foo        |a      |a
foo        |a      |b
foo        |b      |NC
foo        |c      |foobar    
foo        |c      |foobaz 
bar        |a      |a
bar        |a      |b
bar        |a      |ab
bar        |b      |foo
bar        |b      |bar
bar        |c      |NC       

Мне она нужна внутри функции, которая принимает имя_таблицы в качестве параметра.

create table foo (
a character varying,
b int,
c character varying);

insert into foo values('a',1,'foobar');
insert into foo values('b',1,'foobaz');
insert into foo values('ab',2,'foofoo'); -- Not an accepted value in table check_foo

create table bar (
a character varying,
x character varying,
y int);

insert into bar values('a','foo',3);
insert into bar values('b','bar',2);
insert into bar values('ab','foobar',2);-- Not an accepted value in table check_foo

create table check_foo(tablename character varying,
                      field character varying,
                      permittedvalue character varying);

insert into check_foo values('foo','a','a');
insert into check_foo values('foo','a','b');
insert into check_foo values('foo','b','NC'); -- 'NC' means the column is not concerned so must not be validated
insert into check_foo values('foo','c','foobar');    
insert into check_foo values('foo','c','foobaz');  
insert into check_foo values('bar','a','a');
insert into check_foo values('bar','a','b');
insert into check_foo values('bar','a','ab');
insert into check_foo values('bar','b','foo');
insert into check_foo values('bar','b','bar');
insert into check_foo values('bar','c','NC');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...