Форум программистов, компьютерный форум, киберфорум
Наши страницы
Firebird/InterBase
Войти
Регистрация
Восстановить пароль
 
xamelione25
3 / 1 / 2
Регистрация: 04.02.2013
Сообщений: 427
1

Ошибка "Column does not belong to referenced table". при добавлении триггера (Firebird/ibexpert)

29.10.2017, 04:57. Просмотров 340. Ответов 2
Метки нет (Все метки)

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

SQL
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
/******************************************************************************/
/***         Generated by IBExpert 2017.10.11.1 29.10.2017 2:40:48          ***/
/******************************************************************************/
 
SET SQL DIALECT 3;
 
SET NAMES WIN1251;
 
SET CLIENTLIB 'C:\Program Files\Firebird\Firebird_2_5\WOW64\fbclient.dll';
 
CREATE DATABASE 'C:\Users\annas\Desktop\Вузакалавриат З\Дисциплины\Управление данными\Лабараторные\Лабараторная 5\П5.FDB'
USER 'SYSDBA' PASSWORD 'masterkey'
PAGE_SIZE 16384
DEFAULT CHARACTER SET WIN1251 COLLATION WIN1251;
 
 
 
/******************************************************************************/
/***                                Domains                                 ***/
/******************************************************************************/
 
CREATE DOMAIN B AS
NUMERIC(10,10)
NOT NULL;
 
CREATE DOMAIN ESKIZ AS
BLOB SUB_TYPE 0 SEGMENT SIZE 80
NOT NULL;
 
CREATE DOMAIN ESKIZ1 AS
BLOB SUB_TYPE 0 SEGMENT SIZE 80
NOT NULL;
 
CREATE DOMAIN GPT AS
SMALLINT
NOT NULL;
 
CREATE DOMAIN HEL AS
NUMERIC(10,10)
NOT NULL;
 
CREATE DOMAIN HOP AS
NUMERIC(10,10)
NOT NULL;
 
CREATE DOMAIN HRABOCHAYA AS
NUMERIC(10,10)
NOT NULL;
 
CREATE DOMAIN HZAPAS AS
NUMERIC(10,10)
NOT NULL;
 
CREATE DOMAIN K AS
SMALLINT
NOT NULL;
 
CREATE DOMAIN K1 AS
SMALLINT
NOT NULL;
 
CREATE DOMAIN KO AS
NUMERIC(10,10)
NOT NULL;
 
CREATE DOMAIN L AS
NUMERIC(10,10)
NOT NULL;
 
CREATE DOMAIN M1 AS
NUMERIC(10,10)
NOT NULL;
 
CREATE DOMAIN MARKA AS
VARCHAR(30)
NOT NULL;
 
CREATE DOMAIN MARKA1 AS
VARCHAR(30)
NOT NULL;
 
CREATE DOMAIN MATERIAL AS
VARCHAR(30)
NOT NULL;
 
CREATE DOMAIN MM AS
SMALLINT
NOT NULL;
 
CREATE DOMAIN MPR AS
VARCHAR(30)
NOT NULL;
 
CREATE DOMAIN MSTR AS
NUMERIC(10,10)
NOT NULL;
 
CREATE DOMAIN MV AS
SMALLINT
NOT NULL;
 
CREATE DOMAIN N1 AS
SMALLINT
NOT NULL;
 
CREATE DOMAIN N2 AS
INTEGER
NOT NULL;
 
CREATE DOMAIN NAIMENOVANIE AS
VARCHAR(30)
NOT NULL;
 
CREATE DOMAIN NE AS
INTEGER
NOT NULL;
 
CREATE DOMAIN NRAB AS
SMALLINT
NOT NULL;
 
CREATE DOMAIN OM AS
NUMERIC(10,10)
NOT NULL;
 
CREATE DOMAIN SO AS
NUMERIC(10,10)
NOT NULL;
 
CREATE DOMAIN SOE AS
NUMERIC(10,10)
NOT NULL;
 
CREATE DOMAIN SS AS
NUMERIC(10,10)
NOT NULL;
 
CREATE DOMAIN T AS
NUMERIC(10,10)
NOT NULL;
 
CREATE DOMAIN VR AS
SMALLINT
NOT NULL;
 
CREATE DOMAIN VS AS
SMALLINT
NOT NULL;
 
CREATE DOMAIN VU AS
SMALLINT
NOT NULL;
 
 
 
/******************************************************************************/
/***                               Generators                               ***/
/******************************************************************************/
 
CREATE GENERATOR "KONSTRUKCIYA_NOMER";
SET GENERATOR "KONSTRUKCIYA_NOMER" TO 100;
 
CREATE GENERATOR "OSNASKA_NOMER";
SET GENERATOR "OSNASKA_NOMER" TO 101;
 
 
 
/******************************************************************************/
/***                                 Tables                                 ***/
/******************************************************************************/
 
 
 
CREATE TABLE "SPECIPIKACIYA MONTAGNIH EL" (
    NOMER                    N1,
    "NAZVANIE KONSRUKCII"    NAIMENOVANIE,
    "MARKIROVKA KONSRUKCII"  MARKA,
    "MASSA KONSTRUKCII"      M1,
    KOLICHESTVO              K,
    "OBSHAYA MASSA"          OM,
    "ESKIZ KONSTRUKCII"      ESKIZ,
    DLINA                    L,
    SHIRINA                  B,
    TOLHINA                  T,
    "MATERIAL KONSTRUKCII"   MATERIAL
);
 
 
CREATE TABLE "VEDOMOST GRUZOZAHVATNYKH USTR" (
    NOMER1                        N2,
    "MARKIROVKA KONSRUKCII"       MARKA,
    "MARKIROVKA OSNASKI"          MARKA1,
    "ESKIZ OSNASKI"               ESKIZ1,
    GRUZOPODEMNOST                GPT,
    "MASSA STROPOV"               MSTR,
    "MASSA MONTAZHNYKH PRIBOROV"  MPR,
    KOLICHESTVO                   K1,
    "VREMYA STROPOVKI"            VS,
    "VREMYA USTANOVKI"            VU,
    VREMYARASCTROPOVKI            VR
);
 
 
CREATE TABLE "VEDOMOST MONT HARAKTERISTIK" (
    NOMER                         N1,
    "MASSA KONSTRUKCII"           M1,
    "MASSA STROPOV"               MSTR,
    "MASSA MONTAZHNYKH PRIBOROV"  MPR,
    "OBHAYA MASSA"                MM,
    "VYSOTA OPORY"                HOP,
    "ZAPAS PO VYSOTE"             HZAPAS,
    "VYSOTA ELEMENTA"             HEL,
    "VYSOTA STROPOVKI"            VS,
    "MONTAZHNAYA VYSOTA"          MV,
    "KOLICHESTVO RABOCHIH"        NRAB
);
 
 
 
 
/******************************************************************************/
/***                           Unique constraints                           ***/
/******************************************************************************/
 
ALTER TABLE "SPECIPIKACIYA MONTAGNIH EL" ADD CONSTRAINT PK_SPECIPIKACIYAMONTAGNIHEL UNIQUE ("NAZVANIE KONSRUKCII");
ALTER TABLE "SPECIPIKACIYA MONTAGNIH EL" ADD CONSTRAINT PK_SPECIPIKACIYAMONTAGNIHEL1 UNIQUE ("MARKIROVKA KONSRUKCII");
ALTER TABLE "SPECIPIKACIYA MONTAGNIH EL" ADD CONSTRAINT PK_SPECIPIKACIYAMONTAGNIHEL2 UNIQUE ("MASSA KONSTRUKCII");
ALTER TABLE "VEDOMOST GRUZOZAHVATNYKH USTR" ADD CONSTRAINT PK_VEDOMOSTMONTHARAKTERIS UNIQUE ("MASSA STROPOV");
ALTER TABLE "VEDOMOST GRUZOZAHVATNYKH USTR" ADD CONSTRAINT PK_VEDOMOSTMONTHARAKTERIS1 UNIQUE ("MASSA MONTAZHNYKH PRIBOROV");
 
 
/******************************************************************************/
/***                              Primary keys                              ***/
/******************************************************************************/
 
ALTER TABLE "SPECIPIKACIYA MONTAGNIH EL" ADD CONSTRAINT PK_SPECIPIKACIYAMONTAGNIHEL0 PRIMARY KEY (NOMER);
ALTER TABLE "VEDOMOST GRUZOZAHVATNYKH USTR" ADD CONSTRAINT PK_VEDOMOSTMONTAGNIHUSTR PRIMARY KEY (NOMER1);
 
 
/******************************************************************************/
/***                              Foreign keys                              ***/
/******************************************************************************/
 
ALTER TABLE "VEDOMOST GRUZOZAHVATNYKH USTR" ADD CONSTRAINT FK_VEDOMOST_MONT_HARAKTERISTIK4 FOREIGN KEY ("MARKIROVKA KONSRUKCII") REFERENCES "SPECIPIKACIYA MONTAGNIH EL" ("MARKIROVKA KONSRUKCII") ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE "VEDOMOST MONT HARAKTERISTIK" ADD CONSTRAINT FK_VEDOMOST_MONT_HARAKTERISTIK FOREIGN KEY (NOMER) REFERENCES "SPECIPIKACIYA MONTAGNIH EL" (NOMER) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE "VEDOMOST MONT HARAKTERISTIK" ADD CONSTRAINT FK_VEDOMOST_MONT_HARAKTERISTIK1 FOREIGN KEY ("MASSA KONSTRUKCII") REFERENCES "SPECIPIKACIYA MONTAGNIH EL" ("MASSA KONSTRUKCII") ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE "VEDOMOST MONT HARAKTERISTIK" ADD CONSTRAINT FK_VEDOMOST_MONT_HARAKTERISTIK2 FOREIGN KEY ("MASSA STROPOV") REFERENCES "VEDOMOST GRUZOZAHVATNYKH USTR" ("MASSA STROPOV") ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE "VEDOMOST MONT HARAKTERISTIK" ADD CONSTRAINT FK_VEDOMOST_MONT_HARAKTERISTIK3 FOREIGN KEY ("MASSA MONTAZHNYKH PRIBOROV") REFERENCES "VEDOMOST GRUZOZAHVATNYKH USTR" ("MASSA MONTAZHNYKH PRIBOROV") ON DELETE CASCADE ON UPDATE CASCADE;
 
 
/******************************************************************************/
/***                                Indices                                 ***/
/******************************************************************************/
 
CREATE INDEX IDDLINAW ON "SPECIPIKACIYA MONTAGNIH EL" (DLINA);
CREATE INDEX IDKOLICHESTVOW ON "SPECIPIKACIYA MONTAGNIH EL" (KOLICHESTVO);
CREATE INDEX IDMARKIROVKAKONSRUKCIIW ON "SPECIPIKACIYA MONTAGNIH EL" ("MARKIROVKA KONSRUKCII");
CREATE INDEX IDMASSAKONSTRUKCIIW ON "SPECIPIKACIYA MONTAGNIH EL" ("MASSA KONSTRUKCII");
CREATE INDEX IDNAZVANIEKONSRUKCIIW ON "SPECIPIKACIYA MONTAGNIH EL" ("NAZVANIE KONSRUKCII");
CREATE INDEX IDNOMERW ON "SPECIPIKACIYA MONTAGNIH EL" (NOMER);
CREATE INDEX IDOBSHAYAMASSAW ON "SPECIPIKACIYA MONTAGNIH EL" ("OBSHAYA MASSA");
CREATE INDEX IDSHIRINAW ON "SPECIPIKACIYA MONTAGNIH EL" (SHIRINA);
CREATE INDEX IDTOLHINAW ON "SPECIPIKACIYA MONTAGNIH EL" (TOLHINA);
CREATE INDEX IMATERIALKONSTRUKCIIW ON "SPECIPIKACIYA MONTAGNIH EL" ("MATERIAL KONSTRUKCII");
CREATE INDEX IDGRUZOPODEMNOSTW ON "VEDOMOST GRUZOZAHVATNYKH USTR" (GRUZOPODEMNOST);
CREATE INDEX IDKOLICHESTVOW1 ON "VEDOMOST GRUZOZAHVATNYKH USTR" (KOLICHESTVO);
CREATE INDEX IDMARKIRIVKAOSNASKIW ON "VEDOMOST GRUZOZAHVATNYKH USTR" ("MARKIROVKA OSNASKI");
CREATE INDEX IDMASSAMONTAZHNYKHPRIBOROVW ON "VEDOMOST GRUZOZAHVATNYKH USTR" ("MASSA MONTAZHNYKH PRIBOROV");
CREATE INDEX IDMASSASTROPOVW ON "VEDOMOST GRUZOZAHVATNYKH USTR" ("MASSA STROPOV");
CREATE INDEX IDNOMER1W ON "VEDOMOST GRUZOZAHVATNYKH USTR" (NOMER1);
CREATE INDEX IDVREMYASTROPOVKIW ON "VEDOMOST GRUZOZAHVATNYKH USTR" ("VREMYA STROPOVKI");
CREATE INDEX IDVREMYAUSTANOVKIW ON "VEDOMOST GRUZOZAHVATNYKH USTR" ("VREMYA USTANOVKI");
CREATE INDEX IDKOLICHESTVORABOCHIHVZVENEW ON "VEDOMOST MONT HARAKTERISTIK" ("KOLICHESTVO RABOCHIH");
CREATE INDEX IDMONTAZHNAYAVYSOTAW ON "VEDOMOST MONT HARAKTERISTIK" ("MONTAZHNAYA VYSOTA");
CREATE INDEX IDOBHAYAMASSAW ON "VEDOMOST MONT HARAKTERISTIK" ("OBHAYA MASSA");
CREATE INDEX IDVYSOTAELEMENTAW ON "VEDOMOST MONT HARAKTERISTIK" ("VYSOTA ELEMENTA");
CREATE INDEX IDVYSOTAOPORYW ON "VEDOMOST MONT HARAKTERISTIK" ("VYSOTA OPORY");
CREATE INDEX IDVYSOTASTROPOVKIW ON "VEDOMOST MONT HARAKTERISTIK" ("VYSOTA STROPOVKI");
CREATE INDEX IDZAPASPOVYSOTEW ON "VEDOMOST MONT HARAKTERISTIK" ("ZAPAS PO VYSOTE");
Я добавляю сначала генератор (см. в коде выше), а потом триггер который должен будет обеспечивать нумерацию в полях номеров (см. скрин).

При добавлении и компилировании генератора все прошло нормально. Но когда пытаюсь откомпилировать триггер:
SQL
1
2
3
4
5
6
7
CREATE OR ALTER TRIGGER TR_NOMER_KONSTR FOR "SPECIPIKACIYA MONTAGNIH EL"
active BEFORE INSERT POSITION 0
AS
BEGIN
 IF ("SPECIPIKACIYA MONTAGNIH EL".nomer IS NULL) THEN
 "SPECIPIKACIYA MONTAGNIH EL".nomer = gen_id(KONSTRUKCIYA_NOMER,1);
END
выдает ошибку.....
Column does not belong to referenced table.
Dynamic SQL Error.
SQL error code = -206.
Column unknown.
SPECIPIKACIYA MONTAGNIH EL.NOMER.
At line 5, column 35.


КАК ИСПРАВИТЬ???
0
Миниатюры
Ошибка "Column does not belong to referenced table". при добавлении триггера (Firebird/ibexpert)   Ошибка "Column does not belong to referenced table". при добавлении триггера (Firebird/ibexpert)  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.10.2017, 04:57
Ответы с готовыми решениями:

Column does not belong to referenced table.
Вот такую беду получаю: " INSERT INTO PUT_KATALOGA (P) VALUES ('c');; ...

Ошибка при создании триггера: "Column unknown"
ошибка и обстоятельства на картинках (interbase xe7). пробовал так же:...

Ошибка "There is no unique constraint matching given keys for referenced table"
Замучила.:cry: Создал табличку. Потом вторую, с некоторыми полями,...

Ошибка при создании базы данных в IBExpert / Firebird
Как мне избавиться от данной ошибки (см.скрин)?????? Служба Firebird...

Сервер.Загрузка "1" ядра процессора на ~100%, "2" на ~5%!!!? (при многопроц. системе) АС "Смета" БД FB 2.5
Добрый день(вечер)!!! Ситуация: Существует серв с бд для бухгалтерии, вообщем...

2
Bit_Man
426 / 355 / 93
Регистрация: 24.04.2012
Сообщений: 1,405
Записей в блоге: 3
30.10.2017, 03:24 2
Почитать как минимум "Руководство по языку SQL СУБД Firebird" new, old
0
DenNik
Непрофессионал
2014 / 1497 / 308
Регистрация: 26.07.2011
Сообщений: 8,131
31.10.2017, 21:18 3
SQL
1
2
3
4
5
6
7
CREATE OR ALTER TRIGGER TR_NOMER_KONSTR FOR "SPECIPIKACIYA MONTAGNIH EL"
active BEFORE INSERT POSITION 0
AS
BEGIN
 IF (NEW.nomer IS NULL) THEN
 NEW.nomer = gen_id(KONSTRUKCIYA_NOMER,1);
END!
Добавлено через 9 минут
на первый раз просто ткнем носом, а в дальнейшем читай учебники.
рассказать по секрету? я месяц назад не имел представления о всяких триггерах, представлениях и прочих зверях. потом я начал читать учебник, и только прочитав более половины, я написал простую БД из двух таблиц. а еще знаешь чем книги хороши? они учат правильно делать такие вещи как именование таблиц, триггеров и тому подобное
если генератор, то GEN_MYTABLE
если триггер, то TBI_MYTABLE - и ты уже по имени понимаешь, что это триггер for MYTABLE before insert, чего невозможно определить по тем страхолюдским именам, что у тебя.
этот метод я перенял у автора книги, я нахожу его удобным. тебя никто не заставляет делать так же, но выработать для себя личные правила правильного именования объектов БД необходимо, иначе дальше курсовой не продвинешься
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.10.2017, 21:18

Нужно сделать доступ к базе данных "FireBird 2" через интернет
У меня сервер на котором хранятся база данных (БД) для программы. Сервер...

Помогите открыть таблицу *.DBF (FoxPro), усли программа выдаёт ошибку "Not a table."
Возникла необходимость перенести некоторые данные из одной программы в другую....

Помогите "чайнику" подружить FireBird
Корифеи, помогите подружить FireBird 1.5 и FireBird 2.0 или предложите...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru