Текущее время: Чт, мар 28 2024, 16:56

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Внешний ключ!?
СообщениеДобавлено: Пт, окт 01 2004, 11:56 
Ассистент
Ассистент

Зарегистрирован:
Вт, авг 31 2004, 09:03
Сообщения: 33
Всем драсти!
Вопрос может быть прост или я чего то не понимаю. :oops:
Создаю внешний ключ на таблицу. Почему при вводе некорректных данных в эту таблицу он не ругается по поводу не консистенции данных. Или это надо самому проверять, тогда на кой нужны внешние ключи?
Спасибо.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, окт 01 2004, 12:00 
Гость
"ругается" через переменную SY-SUBRC

Если произошла попытка вставки/изменения записей в таблицу
с некорректными или дублирующими ключами,
то внешне произойдет только то, что записи не внесутся или неизменятся.
При этом SY-SUBRC будет отлична от ноля.

А для проверки полей по внешним ключам -
нужно определить кардинальность для поля,
например, как 1:CN


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения: Может какие патчи надо навесить?
СообщениеДобавлено: Пт, окт 01 2004, 12:23 
Ассистент
Ассистент

Зарегистрирован:
Вт, авг 31 2004, 09:03
Сообщения: 33
>"ругается" через переменную SY-SUBRC

это понятно, в эту переменную не ругается.

>Если произошла попытка вставки/изменения записей в таблицу
с некорректными или дублирующими ключами,
то внешне произойдет только то, что записи не внесутся или неизменятся.
При этом SY-SUBRC будет отлична от ноля.

речь идет о внешнем ключе, т.е. не о первичном. Вот именно, что при вставке не корректных значений ничего не происходит.

>А для проверки полей по внешним ключам -
нужно определить кардинальность для поля,
например, как 1:CN

это сделал, как надо.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, окт 01 2004, 14:18 
Старший специалист
Старший специалист

Зарегистрирован:
Ср, авг 18 2004, 09:17
Сообщения: 477
Откуда: Москва
Пол: Мужской
Консистентность БД по внешним ключам отслеживается только в логике программы. Ни о каких ошибках SAP сигнализировать не будет.
Кардинальность влияет только на отображение в диаграмме данных. Никакого иного смысла в рамках системы там нет.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, окт 01 2004, 15:48 
Гость
правильно ли я понял, целостность по внешним ключам только декларируется :( , т.е. как таковой ее нет?


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, окт 01 2004, 20:23 
Почетный гуру
Почетный гуру

Зарегистрирован:
Вт, авг 17 2004, 10:45
Сообщения: 550
Откуда: SAP_BASIS 640
Не совсем правильно.
Консистентность данных отслеживается в полях ввода на экране, если Вы создали эти поля со ссылкой на словарь данных.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 04 2004, 08:15 
Гость
Да, внешний ключ объявленный в словаре данных не является настоящим ограничением ссылочной целостности, а влияет только на проверки пользовательского интерфейса.
Но хорошо хоть то, что ничто не мешает добавить ограничения на уровне БД самому - добавь сначала первичный или уникальный ключ в проверочную таблицу, а потом и сам внешний ключ, например:
Code:
alter table ZSPR add constraint PK_ZSPR PRIMARY KEY (MANDT,KEY1)
alter table ZTAB add constraint FK_ZTAB FOREIGN KEY (MANDT,FKEY) REFERENCES ZSPR(MANDT,KEY1)

Правда, в случае наружения ограничений будут вылетать дампы, но и это можно предусмотреть:
Code:
TABLES: ZTAB.
DATA: ex TYPE REF TO CX_SY_OPEN_SQL_DB.
...
TRY.
    insert ZTAB.
  CATCH CX_SY_OPEN_SQL_DB INTO ex.
* анализируем, если надо ex->SQLCODE.
ENDTRY.


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 04 2004, 09:56 
Ассистент
Ассистент

Зарегистрирован:
Вт, авг 31 2004, 09:03
Сообщения: 33
Всем спасибо за ответы!


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB