powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Informix [игнор отключен] [закрыт для гостей] / Где foreign key?
5 сообщений из 5, страница 1 из 1
Где foreign key?
    #36952504
Фотография Дядя Жора
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите как увидеть зависимость. В какой табличке констрэйнта в смысле?
Код: plaintext
1.
delete from table
SQL Error (- 692 ): Key value for constraint (informix.u226_407) is still being referenced.
...
Рейтинг: 0 / 0
Где foreign key?
    #36952556
Выбегалло
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дядя ЖораПодскажите как увидеть зависимость. В какой табличке констрэйнта в смысле?
Код: plaintext
1.
delete from table
SQL Error (- 692 ): Key value for constraint (informix.u226_407) is still being referenced.


Запускаете dbaccess, идете в Query Language -> Info -> [выбираете таблицу] -> cOnstraints -> Reference -> referenceD

Второй вариант - запускаете dbschema -d [database name] aaa.sql,
затем ищете в aaa.sql "u226_407".

Можно чисто через SQL и системные таблицы, лень писать, можете почитать http://database.itags.org/informix/58668/
...
Рейтинг: 0 / 0
Где foreign key?
    #36952576
Фотография Дядя Жора
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВыбегаллоДядя ЖораПодскажите как увидеть зависимость. В какой табличке констрэйнта в смысле?
Код: plaintext
1.
delete from table
SQL Error (- 692 ): Key value for constraint (informix.u226_407) is still being referenced.


Запускаете dbaccess, идете в Query Language -> Info -> [выбираете таблицу] -> cOnstraints -> Reference -> referenceD

Второй вариант - запускаете dbschema -d [database name] aaa.sql,
затем ищете в aaa.sql "u226_407".

Можно чисто через SQL и системные таблицы, лень писать, можете почитать http://database.itags.org/informix/58668/

Спасибо. eSQLEditor тоже показывает. Было бы интересно как это запросом через системные таблицы выявить. В указанной Вами ссылке этот вопрос так и остался без ответа.
...
Рейтинг: 0 / 0
Где foreign key?
    #36952653
victor16
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
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.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
SELECT master.tabname,
       get_idx_colname(masterconstr.idxname),
       "->",
       slave.tabname,
       get_idx_colname(slaveconstr.idxname)
  FROM sysreferences,
       systables master,
       sysconstraints masterconstr,
       systables slave,
       sysconstraints slaveconstr
 WHERE slaveconstr.constrid = sysreferences.constrid
and master.tabname = ?
   AND master.tabid = sysreferences.ptabid
   AND slave.tabid = slaveconstr.tabid
   AND masterconstr.tabid = master.tabid
   AND masterconstr.constrtype = "P"
   AND slaveconstr.constrtype = "R"
ORDER BY  1 , 2 
;
{
DROP PROCEDURE get_idx_colname;
CREATE PROCEDURE get_idx_colname(p_idxname CHAR( 18 ) )
RETURNING CHAR( 300 );
DEFINE p_collist CHAR( 300 );
DEFINE p_colname CHAR( 18 );
DEFINE i_tabid INTEGER;
DEFINE i_part1 INTEGER;
DEFINE i_part2 INTEGER;
DEFINE i_part3 INTEGER;
DEFINE i_part4 INTEGER;
DEFINE i_part5 INTEGER;
DEFINE i_part6 INTEGER;
DEFINE i_part7 INTEGER;
DEFINE i_part8 INTEGER;
DEFINE i_part9 INTEGER;
DEFINE i_part10 INTEGER;
DEFINE i_part11 INTEGER;
DEFINE i_part12 INTEGER;
DEFINE i_part13 INTEGER;
DEFINE i_part14 INTEGER;
DEFINE i_part15 INTEGER;
DEFINE i_part16 INTEGER;

LET p_collist = '';
LET p_colname = '';
LET i_tabid =  0 ;
LET i_part1 =  0 ;
LET i_part2 =  0 ;
LET i_part3 =  0 ;
LET i_part4 =  0 ;
LET i_part5 =  0 ;
LET i_part6 =  0 ;
LET i_part7 =  0 ;
LET i_part8 =  0 ;
LET i_part9 =  0 ;
LET i_part10 =  0 ;
LET i_part11 =  0 ;
LET i_part12 =  0 ;
LET i_part13 =  0 ;
LET i_part14 =  0 ;
LET i_part15 =  0 ;
LET i_part16 =  0 ;

 SELECT i.tabid,
        i.part1,
        i.part2,
        i.part3,
        i.part4,
        i.part5,
        i.part6,
        i.part7,
        i.part8,
        i.part9,
        i.part10,
        i.part11,
        i.part12,
        i.part13,
        i.part14,
        i.part15,
        i.part16
 INTO i_tabid,
      i_part1,
      i_part2,
      i_part3,
      i_part4,
      i_part5,
      i_part6,
      i_part7,
      i_part8,
      i_part9,
      i_part10,
      i_part11,
      i_part12,
      i_part13,
      i_part14,
      i_part15,
      i_part16
 FROM SYSINDEXES i
 WHERE I.IDXNAME = p_idxname;
IF i_tabid IS NOT NULL AND i_tabid >  0  THEN
   IF i_part1 IS NOT NULL AND i_part1 >  0  THEN
       LET p_colname = '';
       SELECT colname
           INTO p_colname
           FROM syscolumns
       WHERE tabid = i_tabid
         AND colno = i_part1;
       IF p_colname IS NOT NULL AND LENGTH(p_colname)> 0  THEN
           IF p_collist IS NOT NULL AND LENGTH(p_collist)> 0  THEN
               LET p_collist = TRIM(p_collist) || ",";
           END IF;
           LET p_collist = TRIM(p_collist) || p_colname;
       END IF;
   END IF;
   IF i_part2 IS NOT NULL AND i_part2 >  0  THEN
       LET p_colname = '';
       SELECT colname
           INTO p_colname
           FROM syscolumns
       WHERE tabid = i_tabid
         AND colno = i_part2;
       IF p_colname IS NOT NULL AND LENGTH(p_colname)> 0  THEN
           IF p_collist IS NOT NULL AND LENGTH(p_collist)> 0  THEN
               LET p_collist = TRIM(p_collist) || ",";
           END IF;
           LET p_collist = TRIM(p_collist) || p_colname;
       END IF;
   END IF;
   IF i_part3 IS NOT NULL AND i_part3 >  0  THEN
       LET p_colname = '';
       SELECT colname
           INTO p_colname
           FROM syscolumns
       WHERE tabid = i_tabid
         AND colno = i_part3;
       IF p_colname IS NOT NULL AND LENGTH(p_colname)> 0  THEN
           IF p_collist IS NOT NULL AND LENGTH(p_collist)> 0  THEN
               LET p_collist = TRIM(p_collist) || ",";
           END IF;
           LET p_collist = TRIM(p_collist) || p_colname;
       END IF;
   END IF;
   IF i_part4 IS NOT NULL AND i_part4 >  0  THEN
       LET p_colname = '';
       SELECT colname
           INTO p_colname
           FROM syscolumns
       WHERE tabid = i_tabid
         AND colno = i_part4;
       IF p_colname IS NOT NULL AND LENGTH(p_colname)> 0  THEN
           IF p_collist IS NOT NULL AND LENGTH(p_collist)> 0  THEN
               LET p_collist = TRIM(p_collist) || ",";
           END IF;
           LET p_collist = TRIM(p_collist) || p_colname;
       END IF;
   END IF;
   IF i_part5 IS NOT NULL AND i_part5 >  0  THEN
       LET p_colname = '';
       SELECT colname
           INTO p_colname
           FROM syscolumns
       WHERE tabid = i_tabid
         AND colno = i_part5;
       IF p_colname IS NOT NULL AND LENGTH(p_colname)> 0  THEN
           IF p_collist IS NOT NULL AND LENGTH(p_collist)> 0  THEN
               LET p_collist = TRIM(p_collist) || ",";
           END IF;
           LET p_collist = TRIM(p_collist) || p_colname;
       END IF;
   END IF;
   IF i_part6 IS NOT NULL AND i_part6 >  0  THEN
       LET p_colname = '';
       SELECT colname
           INTO p_colname
           FROM syscolumns
       WHERE tabid = i_tabid
         AND colno = i_part6;
       IF p_colname IS NOT NULL AND LENGTH(p_colname)> 0  THEN
           IF p_collist IS NOT NULL AND LENGTH(p_collist)> 0  THEN
               LET p_collist = TRIM(p_collist) || ",";
           END IF;
           LET p_collist = TRIM(p_collist) || p_colname;
       END IF;
   END IF;
   IF i_part7 IS NOT NULL AND i_part7 >  0  THEN
       LET p_colname = '';
       SELECT colname
           INTO p_colname
           FROM syscolumns
       WHERE tabid = i_tabid
         AND colno = i_part7;
       IF p_colname IS NOT NULL AND LENGTH(p_colname)> 0  THEN
           IF p_collist IS NOT NULL AND LENGTH(p_collist)> 0  THEN
               LET p_collist = TRIM(p_collist) || ",";
           END IF;
           LET p_collist = TRIM(p_collist) || p_colname;
       END IF;
   END IF;
   IF i_part8 IS NOT NULL AND i_part8 >  0  THEN
       LET p_colname = '';
       SELECT colname
           INTO p_colname
           FROM syscolumns
       WHERE tabid = i_tabid
         AND colno = i_part8;
       IF p_colname IS NOT NULL AND LENGTH(p_colname)> 0  THEN
           IF p_collist IS NOT NULL AND LENGTH(p_collist)> 0  THEN
               LET p_collist = TRIM(p_collist) || ",";
           END IF;
           LET p_collist = TRIM(p_collist) || p_colname;
       END IF;
   END IF;
   IF i_part9 IS NOT NULL AND i_part9 >  0  THEN
       LET p_colname = '';
       SELECT colname
           INTO p_colname
           FROM syscolumns
       WHERE tabid = i_tabid
         AND colno = i_part9;
       IF p_colname IS NOT NULL AND LENGTH(p_colname)> 0  THEN
           IF p_collist IS NOT NULL AND LENGTH(p_collist)> 0  THEN
               LET p_collist = TRIM(p_collist) || ",";
           END IF;
           LET p_collist = TRIM(p_collist) || p_colname;
       END IF;
   END IF;
   IF i_part10 IS NOT NULL AND i_part10 >  0  THEN
       LET p_colname = '';
       SELECT colname
           INTO p_colname
           FROM syscolumns
       WHERE tabid = i_tabid
         AND colno = i_part10;
       IF p_colname IS NOT NULL AND LENGTH(p_colname)> 0  THEN
           IF p_collist IS NOT NULL AND LENGTH(p_collist)> 0  THEN
               LET p_collist = TRIM(p_collist) || ",";
           END IF;
           LET p_collist = TRIM(p_collist) || p_colname;
       END IF;
   END IF;
   IF i_part11 IS NOT NULL AND i_part11 >  0  THEN
       LET p_colname = '';
       SELECT colname
           INTO p_colname
           FROM syscolumns
       WHERE tabid = i_tabid
         AND colno = i_part11;
       IF p_colname IS NOT NULL AND LENGTH(p_colname)> 0  THEN
           IF p_collist IS NOT NULL AND LENGTH(p_collist)> 0  THEN
               LET p_collist = TRIM(p_collist) || ",";
           END IF;
           LET p_collist = TRIM(p_collist) || p_colname;
       END IF;
   END IF;
   IF i_part12 IS NOT NULL AND i_part12 >  0  THEN
       LET p_colname = '';
       SELECT colname
           INTO p_colname
           FROM syscolumns
       WHERE tabid = i_tabid
         AND colno = i_part12;
       IF p_colname IS NOT NULL AND LENGTH(p_colname)> 0  THEN
           IF p_collist IS NOT NULL AND LENGTH(p_collist)> 0  THEN
               LET p_collist = TRIM(p_collist) || ",";
           END IF;
           LET p_collist = TRIM(p_collist) || p_colname;
       END IF;
   END IF;
   IF i_part13 IS NOT NULL AND i_part13 >  0  THEN
       LET p_colname = '';
       SELECT colname
           INTO p_colname
           FROM syscolumns
       WHERE tabid = i_tabid
         AND colno = i_part13;
       IF p_colname IS NOT NULL AND LENGTH(p_colname)> 0  THEN
           IF p_collist IS NOT NULL AND LENGTH(p_collist)> 0  THEN
               LET p_collist = TRIM(p_collist) || ",";
           END IF;
           LET p_collist = TRIM(p_collist) || p_colname;
       END IF;
   END IF;
   IF i_part14 IS NOT NULL AND i_part14 >  0  THEN
       LET p_colname = '';
       SELECT colname
           INTO p_colname
           FROM syscolumns
       WHERE tabid = i_tabid
         AND colno = i_part14;
       IF p_colname IS NOT NULL AND LENGTH(p_colname)> 0  THEN
           IF p_collist IS NOT NULL AND LENGTH(p_collist)> 0  THEN
               LET p_collist = TRIM(p_collist) || ",";
           END IF;
           LET p_collist = TRIM(p_collist) || p_colname;
       END IF;
   END IF;
   IF i_part15 IS NOT NULL AND i_part15 >  0  THEN
       LET p_colname = '';
       SELECT colname
           INTO p_colname
           FROM syscolumns
       WHERE tabid = i_tabid
         AND colno = i_part15;
       IF p_colname IS NOT NULL AND LENGTH(p_colname)> 0  THEN
           IF p_collist IS NOT NULL AND LENGTH(p_collist)> 0  THEN
               LET p_collist = TRIM(p_collist) || ",";
           END IF;
           LET p_collist = TRIM(p_collist) || p_colname;
       END IF;
   END IF;
   IF i_part16 IS NOT NULL AND i_part16 >  0  THEN
       LET p_colname = '';
       SELECT colname
           INTO p_colname
           FROM syscolumns
       WHERE tabid = i_tabid
         AND colno = i_part16;
       IF p_colname IS NOT NULL AND LENGTH(p_colname)> 0  THEN
           IF p_collist IS NOT NULL AND LENGTH(p_collist)> 0  THEN
               LET p_collist = TRIM(p_collist) || ",";
           END IF;
           LET p_collist = TRIM(p_collist) || p_colname;
       END IF;
   END IF;
END IF;
RETURN p_collist;
END PROCEDURE;
}
...
Рейтинг: 0 / 0
Где foreign key?
    #36953320
Фотография Тан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я запросом пользуюсь

Select 'select unique "'||trim(t.tabname)||'.'||trim(colname)||'" from '||trim(t.tabname)||
' where '||trim(colname)||'=&value union all'
From systables t, sysreferences r, sysconstraints a, sysindexes i, syscolumns c
Where a.tabid=t.tabid and r.ptabid in (&tabid) and r.constrid=a.constrid
and a.idxname=i.idxname and (i.tabid=c.tabid and i.part1=c.colno)

где
value - значение ключа, на которое ищем ссылку
tabid - таблица, из которой надо удалить

если конечно ключ из одного поля
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / Где foreign key?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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