|
su.dbms.sql- SU.DBMS.SQL ------------------------------------------------------------------ From : Vova Aksionov 2:5020/400 21 Feb 2001 10:45:00 To : All Subject : Re: mySQL вопрос (наверное дурацкий) -------------------------------------------------------------------------------- On Tue, 20 Feb 2001 12:59:18 +0300, Alexander Bolotnov <Alexander.Bolotnov@p82.f4.n5052.z2.fidonet.org> wrote: >> сначала получить новое значение PK в переменную >> а потом уже вставлять в первую и вторую таблицу с использованием >> этого PK. Естественно автоинкремент в самих таблицах при этом не >> нужен. > >а как узнать максимальное значение в этой таблице? >можно в ман. С MySQL не работал и манов егоных не знаю а на InterBase к примеру это делается при помощи генератора примерно так: create procedure ins(name, age, email, web) as declare variable vid integer; begin select gen_id(generator_name, 1) from rdb$database into :vid; insert into t1(id, name, age) values(:vid, :name, :age); insert into t2(id, email, web) values(:vid, :email, :web); end; gen_id можно сэмулировать например так: create table gen_id ( id integer ) insert into gen_id(id) values(0); в таблице остается всегда только одна запись и для получения нового id сначала делаем update gen_id set id = id + 1; и если удалось считываем id: select id from gen_id into :vid; commit; теперь уже можно вставлять. Варианты с select max(id) будут работать только при однопользовательской работе и их лучше не применять. Если есть возможность узнать id только что вставленной записи с autoincrement - то можно сначала вставлять в t1, узнавать там получившийся id и с ним вставлять в t2. Hо мне неизвестен способ узнать id autoincrement. Пока. ---------------------------------------------------------------- Vova Aksionov Novosibirsk, Akademgorodok fraks@mail.nsk.ru --- ifmail v.2.15dev5 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /su.dbms.sql/11749e4c8a885.html, оценка из 5, голосов 10
|