Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Для обеспечения целостности данных необходимо наличие связанной записи

Ребят помогите правильно связать таблицы пожалуйста, а то при добавлении БД в Delphi для создания приложения, нельзя добавлять новые записи в таблицы из-за ошибки "Для обеспечения целостности данных необходимо наличие связанной записи".
Ответ:
Сообщение от ArtesiaMaster
нельзя добавлять новые записи в таблицы из-за ошибки "Для обеспечения целостности данных необходимо наличие связанной записи"
А какая разница - дельфи или что другое. При добавлении записи в таблицу на стороне многие должна быть запись на стороне 1. И по другому нельзя. В таблицу Заказ, например, могут добавляться записи только уже существующих (введенных в таблицу Заказчики). Это и есть целостность данных.
Вопрос: Невозможно добавление или изменение записи. Для обеспечения целостности данных необходимо наличие связанной записи в таблице

Есть таблица( в базе "БонусВзыск") в эту таблицу мне нужно записывать данные из двух других (Взыск_планки, Прем_планки). Связь типа [БонусВзыск (N--1) Взыск(Прем)_планки]. Возникает проблема,при попытке внести записи в таблицу БонусВзыск вылазиет ошибка ["Невозможно добавление или изменение записи. Для обеспечения целостности данных необходимо наличие связанной записи в таблице"]. Данные в таблицы Взыск_планки и Прем_планки уже внесены, но пополнение таблицы Бонус Взыск все равно невозможно. Остальная схема данных функционирует правильно. Помогите пожалуйста доделать этот кусочек, часа 4 уже маюсь) Базу прилагаю.
Ответ: Здравствуйте, пополняю записи в таблицу Депозит или Кредит тоже такая ошибка "для обеспечения целостности данных необходимо наличие связанной записи в таблице" не получается можете помочь плиз
Вопрос: Добавление связанных записей в таблицы

Извиняюсь за непрофессионализм. Не работал с базами данных, а тут пришлось. Вопрс следующий. На сервере есть две таблицы. Формат данных такой:
1) tbl1.счетчик, tbl1.txt.
2) tbl2.long, tbl2.txt.
Связь: tbl1.счетчик= tbl2.long. Цель – добавить записи в таблицу tbl1 и tbl2. Записи связанные, поэтому при добавление данных в tbl2 в поле tbl2.long должно передаться значение счетчика tbl1.счетчик. Как это делается? Мне видится решение состоящее из нескольких операций. Первая операция – создать запись в tbl1. Вторая операция – получить значение счетчика вновь созданной записи поля tbl1.счетчик. Сразу вопрос, а по какому признаку отфильтровать эту запись для получения данных, ведь значение счетчика мы незнаем? Понимаю, что вопрос элементарный и имеет простое решение. Подскажите какое. Спасибо
Ответ:
Akina
Если связь один ко много (а твой текст кагбэ намекает) - то одно решение ты родит сам, второе (с триггером) тебе подсказали. Оба решения - простые. Но первое более надёжное. Особенно если его оформить хранимой процедурой.

малыш1234
по какому признаку отфильтровать эту запись для получения данных, ведь значение счетчика мы незнаем?

Во-первых, ты прекрасно знаешь, что именно только что записывал - на этом знании можно построить вполне себе нормальный фильтр.
Во-вторых, есть LAST_INSERT_ID(). Но только при условии, что в первую таблицу добавляется строго одна запись.

Спасибо
Вопрос: Невозможно добавление или изменение записи. MS Access

Возникает проблема,при попытке внести записи в таблицу Вакансии вылазиет ошибка ["Невозможно добавление или изменение записи. Для обеспечения целостности данных необходимо наличие связанной записи в таблице"]. Помогите устранить данную проблему.
Ответ:
Сообщение от ruslan_kg
["Невозможно добавление или изменение записи. Для обеспечения целостности данных необходимо наличие связанной записи в таблице"
Все же написано, чтобы указать код записи упомянутой таблицы, нужно, чтобы этот код был. Например, если хотите указать код должности 5, нужно чтобы в должностях уже была введена запись с кодом 5.
Вопрос: Невозможно добавление или изменение записи

Проблема такая , нужно связать таблицы Contragent с таблицей прихода и таблицей реализации.
После попытки связи , у меня ошибка : невозможно добавление или изменение записи. Для обеспечения целостности данных необходимо наличие связанной записи в таблице "Contragent"
Ответ:
Сообщение от TheNiks
Для обеспечения целостности данных необходимо наличие связанной записи
А что не так. В ContrID могут вводится только те ID, которые есть в таблице Contragent (сейчас там 1 ... 6).
И уберите значение по умолчанию 0 для полей ContrID. Не должно быть значения по умолчанию для внешних ключей.
Вопрос: Select "цепочку связанных" значений

Есть:
id------idin
1------7
3------3
7------4
5------5
4------4
2------2

Подскажите, как получить цепочку всех! возможных значений например:
SELECT *
FROM tbl
WHERE id=1

Должны получить (пример):
1------7
7------4
4------4

id=1 ссылается на 7
id=7 ссылается на 4
id=4 ссылается на 4 (цепочка закончена)

Это всего лишь пример, цепочка может продолжаться и до 10 вложений
Что-то не могу сообразить, как такое написать в запросе?
Ответ: MasterZiv, а чем ещё это может быть?
Вопрос: Хочу разобраться: Невозможно добавление или изменение записи

"Невозможно добавление или изменение записи. Для обеспечения целостности данных необходимо наличие связанной записи в таблице".
Сделал общую форму и опять выдает такую же ошибку.
Ответ:
Сообщение от Issssssssssssk
Однако, к одной зимовке относится только одно поле хозяйство с определенным числом населения
Тогда есть смысл данные о хозяйстве и населении вносить прямо в таблицу зимовок, не делая для хозяйств отдельной таблицы.

Сообщение от Issssssssssssk
В одну общину входят несколько зимовок и урочищ
- В одном урочище расположено несколько зимовок
- Одно урочище не может находиться в нескольких волостях - это относит и к зимовке
Значит, вы можете оставить поле "код волости" только в таблице "община", и убрать его из урочищ, а тем более из зимовок (при этом придется удалить и связи по этим полям):

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

Ну и примерно таким же способом пройдитесь критическим взглядом по остальным таблицам и связям.

В итоге схема должна получиться примерно так:

Таблицы должно быть возможно расположить на схеме так, чтобы связи шли слева направо 1-ко-многом (я примерно так и расположила), при этом либо вообще не должно остаться "перепрыгивания через голову" - т.е. связи таблицы не только с непосредственными соседками, но и соседями соседок или даже соседями соседей соседей и т.п. - либо может остаться ну 1-2 таких связей, если по смыслу это остро необходимо.

Но если "перепрыгивания через голову" много - скорее всего, еще осталось что переосмылить и над чем поработать.

Добавлено через 1 минуту
Сообщение от texnik-san
Таблицы должно быть возможно расположить на схеме так, чтобы связи шли слева направо 1-ко-многом
В таком же порядке их и заполнять нужно: сначала самые левые в этой цепочке, внести туда все возможные значения; затем перейти к следующим слева и постепенно двигаться к правому краю.
Вопрос: Автоматическое добавление связанной записи

Приветствую
Помогите пожалуйста решить задачу.
Имеется две таблицы с данными со связью многие-ко-многим через дополнительную таблицу 2.
Есть форма добавления данных в таблицу 2 связи (организация связей)
Нужно сделать так, что если в одной из таблиц (например 1) добавляемая запись отсутствует, то автоматически добавить эту запись и в связанную таблицу 1.
Очевидно, что хронологически сразу нужно добавить эту запись в связанную таблицу 1 а потом в таблицу связи.

Как удобнее решить эту задачу?
Ответ:
Сообщение от alvk
Вау! Он работает без операционки?
Не знаю при чем тут Вау, и при чем тут без операционки, но работает он под хрюшкой сп3 со всеми обновлениями.
Перезагружается конечно только операционка по большому счету, так как биос никто в этот момент не трогает.
Вопрос: Удаление связанных записей

DECLARE  @a TABLE(typ INT, sm int)
DECLARE  @b TABLE(typ1 INT, typ2 INT)

INSERT INTO @b
SELECT 1,4
UNION
SELECT 2,3

INSERT INTO @a
SELECT 1,10
UNION
SELECT 2,0
UNION
SELECT 3,0
UNION
SELECT 4,0


Как наиболее оптимальнее решить вот какую задачу.

Найти все записи в таблице @a по связке typ=typ1, у которых сумма = 0 и удалить все связанные с ним записи typ2.

Т.е. мы находим в @a записи с typ = typ1 - это 1 и 2.

У записи 2 - остаток 0. Смотрим что у него связь с 3.

Следовательно из @a нужно удалить счет 2 и 3.
Ответ: a_voronin, есть вариант оптимальнее?

Чем CROSS APPLY будет в данном случае быстрее EXISTS ?
Вопрос: Как правильно удалить связанные записи

Есть две таблицы: Оплата (КодОплаты, ДатаОплаты, СуммаОплаты, Остаток) и ОплатаОтгрузки (Код,КодОплаты, КодОтгрузки, СуммаОплаты).
На удаление записи из ОплатаОтгрузки отрабатывает тригер на обновление поля Остаток в табл.Оплата.

if exists (select count(*) from Оплата where КодОплаты in (select КодОплаты from deleted)
update Оплата set Остаток=СуммаОплаты-(select sum(СуммаОплаты) from ОплатаОтгрузки where КодОплаты=(select КодОплаты from deleted)

Проблема в том, когда удаляется запись в табл.Оплата и записи из ОплатаОтгрузки удаляются каскадом, клиент выдает ошибку Timeout.
Если выполнить запрос на удаление на сервере, ошибок не возникает.
Думаю, что в случае удаления записи из Оплата не может отработать update, но почему при удалении на сервере ошибок не возникает?
Как вообще лучше сделать такое удаление, чтобы можно было Остаток обновить?
Спасибо.
Ответ: RodikK,

хуже другое, что запрос вообще творил :) и да интрига с одной скобкой