Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вопрос про проверку наличия ссылки по FK на значение индексированного поля / 25 сообщений из 26, страница 1 из 2
20.01.2017, 15:40
    #39388540
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про проверку наличия ссылки по FK на значение индексированного поля
Можно ли как-то в триггере "до обновления" надежно проверить (с учетом всевозможных режимов и сценариев транзакций) и без изменения значения в индексированном поле с последующей ловлей исключения в WHEN при ссылающемся внешнем ключе "ON UPDATE NO ACTION", существует ли ссылка значения внешнего ключа из другой таблицы на значение в индексированном поле?

Очень не хочется для подобной проверки дергать генератор, без толку увеличивая, тем самым, его значение.
...
Рейтинг: 0 / 0
20.01.2017, 15:43
    #39388542
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про проверку наличия ссылки по FK на значение индексированного поля
Hello, Rdb Dev!
You wrote on 20 января 2017 г. 15:42:44:

Rdb Dev> (с учетом всевозможных режимов и сценариев транзакций)переходи на M$ SQL

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
20.01.2017, 15:45
    #39388543
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про проверку наличия ссылки по FK на значение индексированного поля
Мимопроходящий, зачем?
...
Рейтинг: 0 / 0
20.01.2017, 16:29
    #39388578
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про проверку наличия ссылки по FK на значение индексированного поля
rdb_devзачем?
Затем, что только там это возможно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
20.01.2017, 17:03
    #39388600
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про проверку наличия ссылки по FK на значение индексированного поля
rdb_dev,

что ты хочешь получить и причём тут генераторы ?
...
Рейтинг: 0 / 0
21.01.2017, 02:39
    #39388816
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про проверку наличия ссылки по FK на значение индексированного поля
hvlad, я же, вроде, написал что хочу получить.
Через генератор я могу, к примеру, получить некое уникальное значение для поля первичного ключа и в триггере "до обновления" изменить значение в поле первичного ключа на новое. При условии, что на это поле есть внешние ключи ON UPDATE NO ACTION, попытка изменить значение поля приведет к исключению, которое можно обработать. Это как вариант реализации.
...
Рейтинг: 0 / 0
21.01.2017, 03:24
    #39388818
чччД
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про проверку наличия ссылки по FK на значение индексированного поля
rdb_devhvlad, я же, вроде, написал что хочу получить.
Через генератор я могу, к примеру, получить некое уникальное значение для поля первичного ключа и в триггере "до обновления" изменить значение в поле первичного ключа на новое. При условии, что на это поле есть внешние ключи ON UPDATE NO ACTION, попытка изменить значение поля приведет к исключению, которое можно обработать. Это как вариант реализации.

А нельзя ли разбить одну длинную мысль на несколько более коротких? Непонятно ничего.
...
Рейтинг: 0 / 0
21.01.2017, 04:11
    #39388820
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про проверку наличия ссылки по FK на значение индексированного поля
чччДА нельзя ли разбить одну длинную мысль на несколько более коротких? Непонятно ничего.Ok. попробую объяснить "на пальцах" и абстрактно, чтобы не отвлекать мысль на постороннюю конкретику.

Допустим, имеется некий тип и у этого типа есть атрибуты. Также имеется экземпляр типа и значения атрибутов для экземпляра этого типа. Очевидно, что таблица значений атрибутов имеет два FK - на таблицу атрибутов и на таблицу экземпляров. В свою очередь, таблицы атрибутов и экземпляров имеют FK на таблицу типов.
Теперь представим случай, когда кто-то меняет привязку атрибута от одного типа к другому и нам необходимо в триггере "до обновления" определить этот момент, чтобы предотвратить изменение выдачей исключения, если у атрибута уже есть значение, так как значение имеет FK не только на атрибут, но и на тип, уже не совпадающий с типом, к которому привязан атрибут. Несовпадение типа принадлежности атрибута и типа принадлежности экземпляра для одного и того же значения приводит к противоречивости данных.
...
Рейтинг: 0 / 0
21.01.2017, 12:09
    #39388871
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про проверку наличия ссылки по FK на значение индексированного поля
rdb_devтаблица значений атрибутов имеет два FK - на таблицу атрибутовИ этот FK - не влючает в себя ID типа ?
...
Рейтинг: 0 / 0
22.01.2017, 15:53
    #39389079
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про проверку наличия ссылки по FK на значение индексированного поля
hvlad, предлагаешь тащить в таблицу значений идентификатор типа? Можно, конечно... но хотелось бы обойтись без этого.
...
Рейтинг: 0 / 0
23.01.2017, 09:33
    #39389299
WildSery
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про проверку наличия ссылки по FK на значение индексированного поля
rdb_dev,

Те, кто уже решал такую задачу, решили всё-таки идентификатор типа таскать везде за собой.
...
Рейтинг: 0 / 0
23.01.2017, 09:48
    #39389309
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про проверку наличия ссылки по FK на значение индексированного поля
WildSery, понятно, спасибо! Это также оптимальное решение, если требуется ON UPDATE CASCADE.
...
Рейтинг: 0 / 0
23.01.2017, 10:15
    #39389329
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про проверку наличия ссылки по FK на значение индексированного поля
WildSery, малость прикинул и решил, что "оптимальности" не получается, так как для "таблицы значений" придется делать два FK, включающих поле типа и при каскадном изменении поля типа по одной из "веток" всегда буду получать исключение по ограничению второго FK. :(
...
Рейтинг: 0 / 0
23.01.2017, 10:20
    #39389338
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про проверку наличия ссылки по FK на значение индексированного поля
rdb_dev,

что-то я плохо понимаю о чём ты. Выложи предполагаемый DDL таблиц. И что ты там контролировать собрался
...
Рейтинг: 0 / 0
23.01.2017, 10:39
    #39389352
WildSery
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про проверку наличия ссылки по FK на значение индексированного поля
Не обязательно навешивать туда FK ещё один, я с точки зрения целостности "ссылки" рассуждал. Значение содержит и тип, и атрибут, что логично.

Не совсем ясно, зачем отслеживать перевешивание атрибута, "есть ли уже значения атрибута для этого типа".
Почему нельзя просто запретить изменение типа для атрибута?
Ты хочешь создать атрибут "для какого-то типа", а потом его уже цеплять куда следует? В этом смысл?
...
Рейтинг: 0 / 0
23.01.2017, 10:55
    #39389363
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про проверку наличия ссылки по FK на значение индексированного поля
Симонов Денис, в соответствии с условным описанием и предложенным вариантом, это выглядит примерно так:
пардон муа за квотирование идентификаторов
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
/*
 * Типы объектов
 */
CREATE TABLE "obj_types"
(
    "id"   ID NOT NULL,
    "name" NAME NOT NULL,
  CONSTRAINT "obj_types__pk" PRIMARY KEY ("id"),
  CONSTRAINT "obj_types__uq" UNIQUE ("name")
);

/*
 * Атрибуты типа объекта
 */
CREATE TABLE "type_attrs"
(
    "type_id" ID NOT NULL
    "id"      ID NOT NULL,
    "name"    NAME NOT NULL,
  CONSTRAINT "type_attrs__pk" PRIMARY KEY ("type_id", "id"),
  CONSTRAINT "type_attrs__uq" UNIQUE ("type_id", "name"),
  CONSTRAINT "type_attrs__fk__obj_types" FOREIGN KEY ("type_id")
    REFERENCES "obj_types" ("id") ON UPDATE CASCADE ON DELETE CASCADE
);

/*
 * Объекты
 */
CREATE TABLE "obj"
(
    "type_id" ID NOT NULL,
    "id"      ID NOT NULL,
    "name"    ID NOT NULL,
  CONSTRAINT "obj__pk" PRIMARY KEY ("type_id", "id"),
  CONSTRAINT "obj__uq" UNIQUE ("type_id", "name"),
  CONSTRAINT "obj__fk__obj_types" FOREIGN KEY ("type_id")
    REFERENCES "obj_types" ("id") ON UPDATE CASCADE ON DELETE CASCADE
);

/*
 * Значения атрибутов объектов
 */
CREATE TABLE "obj_value"
(
    "type_id" ID NOT NULL,
    "attr_id" ID NOT NULL,
    "obj_id"  ID NOT NULL,
    "id"      ID NOT NULL,
    "value"   DOUBLE PRECISION DEFAULT NULL,
  CONSTRAINT "obj_value__pk" PRIMARY KEY ("id"),
  CONSTRAINT "obj_value__fk__type_attrs" FOREIGN KEY ("type_id", "attr_id")
    REFERENCES "type_attrs" ("type_id", "id") ON UPDATE CASCADE ON DELETE CASCADE,
  CONSTRAINT "obj_value__fk__obj" FOREIGN KEY ("type_id", "obj_id")
    REFERENCES "obj" ("type_id", "id") ON UPDATE CASCADE ON DELETE CASCADE
);


При изменении "type_id" в таблице "type_attrs" или "obj" я всегда буду получать исключение по ограничению целостности "obj_value__fk__type_attrs" или "obj_value__fk__obj", если в таблице "obj_value" находится соответствующая запись.
...
Рейтинг: 0 / 0
23.01.2017, 10:57
    #39389367
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про проверку наличия ссылки по FK на значение индексированного поля
В таблице "obj" опечатался с типом поля "name".
...
Рейтинг: 0 / 0
23.01.2017, 14:37
    #39389525
KreatorXXI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про проверку наличия ссылки по FK на значение индексированного поля
rdb_dev,

По-моему, таблицы составлены правильно. Только мне не понятно - зачем разрешать изменение в таблице "type_attr" поля "type_id"?
У Вас атрибуты привязаны к объекту. Как атрибутов можно перевязать к другому? Нет, теоретически, через запрос можно, конечно. А как интерфейсно?
На экране есть список объектов и рядом список его атрибутов. Зачем позволять атрибутам менять объект? Непонятно. Наверно, можно только добавлять или удалять. Вот при удалении должен работать форейн ключ.
...
Рейтинг: 0 / 0
23.01.2017, 15:53
    #39389607
Di_LIne
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про проверку наличия ссылки по FK на значение индексированного поля
KreatorXXIЗачем позволять атрибутам менять объект?
Атрибут "длинна", объект №1 = пиписька, объект №2 = ЗП.

Правда rdb_dev не вкуривает, что длинна пиписьки не равно длинна ЗП.
И пофигу, что буковки в названии атрибута одинаковые.
Физический смысл - разный.
...
Рейтинг: 0 / 0
23.01.2017, 16:02
    #39389614
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про проверку наличия ссылки по FK на значение индексированного поля
У меня еще одна идейка оформилась, которую набросал, но еще не проверял. Не буду сейчас расписывать всевозможные варианты того, как я собираюсь "это" использовать (на описание уйдет немало времени), просто гляньте, плз, кому не влом.
Выглядит, конечно, пахабно, но тем не менее...
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
/*
 * Типы объектов
 */
CREATE TABLE "obj_types"
(
    "id"   ID NOT NULL,
    "name" NAME NOT NULL,
  CONSTRAINT "obj_types__pk" PRIMARY KEY ("id"),
  CONSTRAINT "obj_types__uq" UNIQUE ("name")
);

/*
 * Атрибуты типа объекта
 */
CREATE TABLE "type_attrs"
(
    "type_id" ID NOT NULL
    "id"      ID NOT NULL,
    "name"    NAME NOT NULL,
  CONSTRAINT "type_attrs__pk" PRIMARY KEY ("id"),
  CONSTRAINT "type_attrs__uq" UNIQUE ("type_id", "name"),
  CONSTRAINT "type_attrs__fk__obj_types" FOREIGN KEY ("type_id")
    REFERENCES "obj_types" ("id") ON UPDATE CASCADE ON DELETE CASCADE
);

REVOKE ALL ON TABLE "type_attrs" FROM ROLE USERS;

CREATE GENERATOR "type_attrs__GEN";

SET TERM ^;
CREATE OR ALTER TRIGGER "type_attrs__TR_BIU"
  FOR "type_attrs"
  ACTIVE
  BEFORE INSERT OR UPDATE
  POSITION 0
AS
BEGIN
  IF (NOT(NEW."id" IS NOT NULL
          AND NEW."id" <= GEN_ID("type_attrs__GEN", 0)
      ) THEN
    NEW."id" = GEN_ID("type_attrs__GEN", 1);
END^
SET TERM ;^


CREATE OR ALTER EXCEPTION "attr_value__xRowExists"
  'Существует ссылка внешнего ключа';

SET TERM ^;
CREATE OR ALTER PROCEDURE "type_attrs__set"
  (
    "oldId"   ID DEFAULT NULL,
    "typeId"  ID DEFAULT NULL,
    "name"    NAME DEFAULT NULL
  )
  RETURNS
  (
    "id" ID,
    "x"  BOOL
  )
AS
  DECLARE VARIABLE typeId ID DEFAULT NULL;
BEGIN
  IF (:"oldId" IS NULL) THEN
    BEGIN
      IF (:"typeId" IS NOT NULL AND :"name" IS NOT NULL) THEN
        INSERT INTO "type_attrs" ("type_id", "name")
          VALUES (:"typeId", :"name")
          RETURNING "id" INTO: "id";
    END
  ELSE
    IF (:"typeId" IS NOT NULL AND :"name" IS NOT NULL) THEN
      BEGIN
        SELECT "type_id", "id"
          FROM "type_attrs"
          WHERE "id" = :"oldId"
          FOR UPDATE WITH LOCK
          INTO: typeId, "id";
        IF (:"id" IS NULL) THEN EXIT;
        -- Для записей в "obj" и "type_attrs"
        -- блокируем общую запись в "obj_types"
        -- для предотвращения изменения соответствующих записей из других
        -- транзакций в таблицах "type_attr" и "attr_value"
        SELECT "id"
          FROM "obj_types"
          WHERE "id" = :typeId
          FOR UPDATE WITH LOCK;
          INTO: typeId
        SAVEPOINT "type_attrs__set__SVPNT";
        BEGIN
          "x" = 'N';
          -- определяем наличие реферального FK
          UPDATE "type_attrs"
            SET "id" = NULL
            WHERE "id" = :"oldId";
          WHEN EXCEPTION "attr_value__xRowExists" DO
            "x" = 'Y';
        END
        ROLLBACK TO SAVEPOINT "type_attrs__set__SVPNT";
        RELEASE SAVEPOINT "type_attrs__set__SVPNT";
        UPDATE "type_attrs"
          SET "type_id" = :"typeId",
            "name" = :"name"
          WHERE "id" = :"oldId"
          RETURNING "id" INTO: "id";
      END
    ELSE
      DELETE FROM "type_attrs"
        WHERE "id" = :"oldId";
  SUSPEND;
END^
SET TERM ;^

GRANT ALL ON TABLE "type_attr" TO PROCEDURE "type_attr__set";
GRANT EXECUTE ON PROCEDURE "type_attr__set" TO ROLE USERS;

/*
 * Объекты
 */
CREATE TABLE "obj"
(
    "type_id" ID NOT NULL,
    "id"      ID NOT NULL,
    "name"    NAME NOT NULL,
  CONSTRAINT "obj__pk" PRIMARY KEY ("id"),
  CONSTRAINT "obj__uq" UNIQUE ("name"),
  CONSTRAINT "obj__fk__obj_types" FOREIGN KEY ("type_id")
    REFERENCES "obj_types" ("id") ON UPDATE CASCADE ON DELETE CASCADE
);

REVOKE ALL ON TABLE "obj" FROM ROLE USERS;

CREATE GENERATOR "obj__GEN";

SET TERM ^;
CREATE OR ALTER TRIGGER "obj__TR_BIU"
  FOR "obj"
  ACTIVE
  BEFORE INSERT OR UPDATE
  POSITION 0
AS
BEGIN
  IF (NOT(NEW."id" IS NOT NULL
          AND NEW."id" <= GEN_ID("obj__GEN", 0)
      ) THEN
    NEW."id" = GEN_ID("obj__GEN", 1);
END^
SET TERM ;^


SET TERM ^;
CREATE OR ALTER PROCEDURE "obj__set"
  (
    "oldId"   ID DEFAULT NULL,
    "typeId"  ID DEFAULT NULL,
    "name"    NAME DEFAULT NULL
  )
  RETURNS
  (
    "id" ID,
    "x"  BOOL
  )
AS
  DECLARE VARIABLE typeId ID DEFAULT NULL;
BEGIN
  IF (:"oldId" IS NULL) THEN
    BEGIN
      IF (:"typeId" IS NOT NULL AND :"name" IS NOT NULL) THEN
        INSERT INTO "obj" ("type_id", "name")
          VALUES (:"typeId", :"name")
          RETURNING "id" INTO: "id";
    END
  ELSE
    IF (:"typeId" IS NOT NULL AND :"name" IS NOT NULL) THEN
      BEGIN
        SELECT "type_id", "id"
          FROM "obj"
          WHERE "id" = :"oldId"
          FOR UPDATE WITH LOCK
          INTO: typeId, "id";
        IF (:"id" IS NULL) THEN EXIT;
        -- Для записей в "obj" и "type_attrs"
        -- блокируем общую запись в "obj_types"
        -- для предотвращения изменения соответствующих записей из других
        -- транзакций в таблицах "type_attr" и "attr_value"
        SELECT "id"
          FROM "obj_types"
          WHERE "id" = :typeId
          FOR UPDATE WITH LOCK;
          INTO: typeId
        SAVEPOINT "obj__set__SVPNT";
        BEGIN
          "x" = 'N';
          -- определяем наличие реферального FK
          UPDATE "obj"
            SET "id" = NULL
            WHERE "id" = :"oldId";
          WHEN EXCEPTION "attr_value__xRowExists" DO
            "x" = 'Y';
        END
        ROLLBACK TO SAVEPOINT "obj__set__SVPNT";
        RELEASE SAVEPOINT "obj__set__SVPNT";
        UPDATE "obj"
          SET "type_id" = :"typeId",
            "name" = :"name"
          WHERE "id" = :"oldId"
          RETURNING "id" INTO: "id";
      END
    ELSE
      DELETE FROM "obj"
        WHERE "id" = :"oldId";
  SUSPEND;
END^
SET TERM ;^

GRANT ALL ON TABLE "obj" TO PROCEDURE "obj__set";
GRANT EXECUTE ON PROCEDURE "obj__set" TO ROLE USERS;


/*
 * Значения атрибутов объектов
 */
CREATE TABLE "attr_value"
(
    "attr_id" ID NOT NULL,
    "obj_id"  ID NOT NULL,
    "id"      ID NOT NULL,
    "value"   DOUBLE PRECISION DEFAULT NULL,
  CONSTRAINT "attr_value__pk" PRIMARY KEY ("id"),
  CONSTRAINT "attr_value__fk__type_attrs" FOREIGN KEY ("attr_id")
    REFERENCES "type_attrs" ("id") ON UPDATE CASCADE ON DELETE CASCADE,
  CONSTRAINT "attr_value__fk__obj" FOREIGN KEY ("obj_id")
    REFERENCES "obj" ("id") ON UPDATE CASCADE ON DELETE CASCADE
);

SET TERM ^;
CREATE OR ALTER TRIGGER "attr_value__TR_BU"
AS
BEGIN
  IF (NEW."attr_id" IS NULL) THEN
    EXCEPTION "attr_value__xRowExists";
END^
SET TERM ;^

Интересует ваше мнение по поводу данной реализации - чем такой вариант чреват и что я не учел?
...
Рейтинг: 0 / 0
23.01.2017, 16:04
    #39389620
WildSery
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про проверку наличия ссылки по FK на значение индексированного поля
Di_LIne,

Не надо чепуху писать.
У него атрибут привязан к конкретному "типу" (читай - набору атрибутов), и длину твоей ЗП посчитают отдельно.
...
Рейтинг: 0 / 0
23.01.2017, 16:05
    #39389622
WildSery
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про проверку наличия ссылки по FK на значение индексированного поля
rdb_dev,

Читать пока лень, ведь ты так и не ответил, почему в твоей конструкции вообще возможно менять тип атрибута.
...
Рейтинг: 0 / 0
23.01.2017, 16:06
    #39389624
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про проверку наличия ссылки по FK на значение индексированного поля
rdb_dev, результат "x" процедур "type_attrs__set" и "obj__set" предполагается, должен показывать наличие/отсутствие реферальных значений внешних ключей и позволять использующему его алгоритму клиента или другой ХП принимать дальнейшие решения на основании полученных данных.
...
Рейтинг: 0 / 0
23.01.2017, 16:08
    #39389626
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про проверку наличия ссылки по FK на значение индексированного поля
WildSery, очень долго расписывать что да как... Постараюсь набросать пару вариантов, когда доберусь до дома и если не забуду.
...
Рейтинг: 0 / 0
23.01.2017, 16:21
    #39389636
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про проверку наличия ссылки по FK на значение индексированного поля
WildSeryведь ты так и не ответил, почему в твоей конструкции вообще возможно менять тип атрибута.Уточнение - тип объекта атрибута.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вопрос про проверку наличия ссылки по FK на значение индексированного поля / 25 сообщений из 26, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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