Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Уникальный id поля для нескольких таблиц? / 7 сообщений из 7, страница 1 из 1
15.07.2015, 02:04:57
    #39007432
manking
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Уникальный id поля для нескольких таблиц?
Как лучше реализовать?

Таблица 1
id_сотрудника
id_объекта
имя


Таблица 2
id_товара
id_объекта
название

Таблица 3
id_автомобиля
id_объекта
марка


Таблица 4 хранит уникальный id объекта
id_объекта
время_перепроверки_информации
напоминать


Нужно чтобы при добавлении записи в таблицы 1-3, id_объекта был уникален для всех записей во всех таблицах.
У каждой таблицы свой primary key, нужен автоинкремент для поля id_объекта.
...
Рейтинг: 0 / 0
15.07.2015, 02:18:36
    #39007434
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Уникальный id поля для нескольких таблиц?
Напрямую - никак.
Варианты:
1) Для генерации id использовать отдельную таблицу с единственным полем.
2) Блокировать все таблицы, брать максимум, прибавлять единицу. (Сильно замедлит модификацию данных).
...
Рейтинг: 0 / 0
15.07.2015, 02:20:21
    #39007435
Relic Hunter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Уникальный id поля для нескольких таблиц?
GUID бредогенератор.
...
Рейтинг: 0 / 0
15.07.2015, 04:59:25
    #39007451
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Уникальный id поля для нескольких таблиц?
:) самый хороший ответ - это самый простой ответ!

таблица 1-3 содержит данные, таблица 4 айди обьекта и дату последней проверки....

%ля буду, при вставке нового обьекта в таблицу 1 или 2 или 3 - его дата создания совпадает с датой последней проверки данных!!!

вставлять сначала запись в таблицу 4 (айди автоинкремент) потом вставлять в нужную из 3ёх
...
Рейтинг: 0 / 0
15.07.2015, 10:16:21
    #39007577
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Уникальный id поля для нескольких таблиц?
Когда одно поле таблицы ссылается на записи из разных таблиц, то это называется первая паранормальная форма. Так делать нельзя.
Вместо этого можно сделать так: таблица запланированных проверок (дата-время, напоминать), в каждую Таблицу1,2,3 добавить ссылку на запись из этой таблицы.
Либо в таблицу проверок добавить отдельные поля для ссылок на каждую таблицу 1,2,3.
Либо на каждую таблицу1,2,3 создать отдельную таблицу проверок.
...
Рейтинг: 0 / 0
15.07.2015, 18:41:46
    #39008194
Cygapb-007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Уникальный id поля для нескольких таблиц?
mankingКак лучше реализовать?
Таблица 4 хранит уникальный id объекта
Нужно чтобы при добавлении записи в таблицы 1-3, id_объекта был уникален для всех записей во всех таблицах.
У каждой таблицы свой primary key, нужен автоинкремент для поля id_объекта.
http://sqlfiddle.com/#!9/03676/1
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
create table sotr(
  id int auto_increment primary key,
  obj int unique
  );
create table prod(
  id int auto_increment primary key,
  obj int unique
  );
create table obj(
  type_id int primary key,
  id int 
  );
insert obj values(1,1);

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
create trigger TR_sotr_BI
before insert on sotr
for each row begin 
  declare v_obj int;
  select id into v_obj from obj where type_id=1 for update;
  update obj set id=id+1;
  set new.obj=v_obj;
end
//
create trigger TR_prod_BI
before insert on prod
for each row begin 
  declare v_obj int;
  select id into v_obj from obj where type_id=1 for update;
  update obj set id=id+1;
  set new.obj=v_obj;
end
//

Код: sql
1.
2.
3.
4.
insert sotr () values (),();
insert prod () values ();
insert sotr () values ();
insert prod () values ();


select * from sotr;id obj1 12 23 4select * from prod;id obj1 32 5select * from obj;
type_id id1 6
...
Рейтинг: 0 / 0
15.07.2015, 18:43:20
    #39008196
Cygapb-007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Уникальный id поля для нескольких таблиц?
эх, про WHERE в UPDATE забыл... ну да ладно, не суть)
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Уникальный id поля для нескольких таблиц? / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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