|
|
|
ИЗМЕНЕНИЕ БД?
|
|||
|---|---|---|---|
|
#18+
Существует проблема. Есть 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 изменять нельзя. Можно добавлять новые таблицы, менять процедуру в соответствие с новыми таблицами(не нарушая общей логики) и т.д. Т.е. отсечь такие контракты где пришло что-то пустое, чтобы эти строки скрипт пропускал, но их же надо как-то пометить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2010, 12:08 |
|
||
|
ИЗМЕНЕНИЕ БД?
|
|||
|---|---|---|---|
|
#18+
Aquest Однако проуедура делает вот что: она меняет предыдущее знач. PROJECT_MANAGER на новое, а если новое-пустое, то оставляет старое, а права не заносит если хотя бы одно поле из 2 пустое.Исправить процедуру, чтобы она делала то, что нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2010, 16:38 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=71&tid=1542553]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 239ms |
| total: | 362ms |

| 0 / 0 |
