powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / ИЗМЕНЕНИЕ БД?
2 сообщений из 2, страница 1 из 1
ИЗМЕНЕНИЕ БД?
    #36835552
Aquest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Существует проблема.
Есть 3 таблицы:
1.Contract_load(нет ключа)
2.Contract-составной ключ(Contract_number,Country_code)
3.Userentitiy(составной ключ из всех полей-user_ID,role1,role2,role3,Contract_number,Country_code)
Связи:
Таблицы напрямую не связаны между собой.
Суть проблемы
Логика:данные из таблицы Contract_load грузятся в Contract с помощью хранимой процедуры.
...В таблицах Contract и Contract_load есть поля Project_manager и PM_internet_addr.
Возникает ситуация:
Когда какому-то контракту, который уже есть(поля-Contract_number,Country_code) в Contract
приходят данные из Contract_load где уже другой Project_manager и PM_internet_addr для данного контракта, и тогда, логично удалить права для старого Project_manager из таблицы Userentity
и добавить туда проава для нового Project_manager(пришедшего из Contract_load).
Это процедура и делает.
Но есть ситуация!
Когда приходят данные из Contract_load и там Project_manager-не пустой и PM_internet_addr-пустой IF ((vs_PROJECT_MANAGER <> ' ' AND vs_PM_INTERNET_ADDR <> ' ')). Т.е. при нарушении данного условия как-бы нужно завести пустого PROJECT_MANAGER и его PM_INTERNET_ADDR в Contract и назначить пустому права. Однако проуедура делает вот что:
она меняет предыдущее знач. PROJECT_MANAGER на новое, а если новое-пустое, то оставляет старое, а права не заносит если хотя бы одно поле из 2 пустое.
И вот если Project_manager-не пустой и PM_internet_addr-пустой то в таблице Contract для данного контракта Project_manager меняется на нового vs_PROJECT_MANAGER а интернет адрес остается прежнего (согласен нелогично). А в таблицу Userentity не заносятся права нового пользователя.
Имеем ,фактически, какого-то пользователя в контракте у которого нет прав в Userentity.
Есть скрипт который проверяет всех пользователей в Contract и Userentity и при этом он не находит такого пользователя в Userentity и "говорит" права для него не предоставлены.

Вопрос: не меняя логики процедуры как сделать, чтобы скрипт не выводил таких сообщений?

Идея добавить поле в таблицу контракт, чтобы помечать те контракты, для который пришло что-то пустое и в дальнейшем такие строки исключить из рассмотрения в скрипте отпадает т.к. таблицу Contract изменять нельзя.
Можно добавлять новые таблицы, менять процедуру в соответствие с новыми таблицами(не нарушая общей логики) и т.д.
Т.е. отсечь такие контракты где пришло что-то пустое, чтобы эти строки скрипт пропускал, но их же надо как-то пометить?
...
Рейтинг: 0 / 0
ИЗМЕНЕНИЕ БД?
    #36836452
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aquest Однако проуедура делает вот что:
она меняет предыдущее знач. PROJECT_MANAGER на новое, а если новое-пустое, то оставляет старое, а права не заносит если хотя бы одно поле из 2 пустое.Исправить процедуру, чтобы она делала то, что нужно.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / ИЗМЕНЕНИЕ БД?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]