Пропустить личность непосредственно по запросу - PullRequest
0 голосов
/ 25 мая 2018

У меня такая ситуация:

ТАБЛИЦА 1

  • ID,
  • Другие столбцы

ТАБЛИЦА 2

  • ID,
  • Другие столбцы

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

Почему?Потому что эти таблицы в основном связаны, но без каких-либо связей с базой данных.Когда пользователь хочет вызвать объект, принадлежащий другой таблице, он должен это сделать, зная только идентификатор одной из таблиц.В моем случае у меня есть доход / финансовые счета , связанные с реестрами , и они ДОЛЖНЫ иметь такой же идентификатор .

В настоящее времяпринятое решение (одно неприятное)

Сделка.Зафиксируйте, если сгенерированный идентификатор не существует в другой таблице, прервите, если существует, и благодаря циклу while (это часть, которая мне не нравится), транзакции будут продолжать создаваться до тех пор, пока не будет выполнено условие.

Есть еще какие-нибудь чистые решения?

Ответы [ 2 ]

0 голосов
/ 26 мая 2018

Это очень странный запрос, но вы можете увеличивать значения идентификаторов, чтобы одно было четным, а другое - нечетным.Тогда между этими двумя таблицами никогда не будет совпадений:

create table table1 (
    table1_id int identity(1, 2) primary key,
    . . . 
);

create table table2 (
    table2_id int identity(2, 2) primary key,
    . . .
);

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

0 голосов
/ 25 мая 2018

Идентификационные данные не подходят для этого случая.Решение: вам нужно использовать одну последовательность для вставки в обе таблицы.Просто и понятно.

Это чистое решение.Все остальные - просто (некрасивые) обходные пути.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...