сложные вставки - PullRequest
       13

сложные вставки

0 голосов
/ 12 июня 2010

Я должен сделать что-то вроде этого

insert into object (name, value, first_node) values ('some_name', 123, 0)
@id = mysql_last_insert_id()
insert nodes (name, object_id) values ('node_name',@id)
@id2 = mysql_last_insert_id()
update object set first_node=@id2 where id=@id

Можно ли сделать это проще?Что, если я хочу вставить больше пар (объект, узел) с разумной эффективностью?

1 Ответ

0 голосов
/ 12 июня 2010

Вы должны использовать третью таблицу для установления отношений:

  • ОБЪЕКТ (ID, ИМЯ, ЗНАЧЕНИЕ)
  • УЗЛ (ID, ИМЯ)
  • OBJ_NOD(NODE, OBJECT)

Вы можете сделать вставки следующим образом:

insert into object (name, value) values ('some_name', 123)
@oid = mysql_last_insert_id()
insert nodes (name) values ('node_name')
@nid = mysql_last_insert_id()
insert obj_node (node,object) values (@nid, @oid)

Затем вы можете использовать соединения, чтобы получить узел для определенного объекта (или объекты для узла):

SELECT O.ID AS OID, O.NAME AS ONAME, O.VALUE, N.NAME AS NNAME, N.ID AS NID
FROM OBJECT AS O
JOIN OBJ_NOD ON OBJ_NOD.OBJECT = O.ID
JOIN NODES AS N ON N.ID = OBJ_NOD.NODE
WHERE O.ID = @object_id; —- or 'N.ID = @node_id' if you want to get elements from a node id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...