INSERT INTO student VALUES(null, 'name1', 'gender1', '2002-06-06');
INSERT INTO studentdetails VALUES(last_insert_id(), 'address1','postcode1','hometel1','email','parentname1',null,null,null);

解决方案 »

  1.   

    SELECT Last_Insert_Id();只要你向student 插入一条新信息,
    然后再运行它
    它取出的就是你上一条INSERT语句插入的自增值,
    它并不会因别的用户插入新的记录而改变的,
      

  2.   

    建议你在INSERT是使用lock
    ---------------------------------
    mysql_query("lock tables student write");
    //insert into student ............
    //select Last_insert_id();or select max(id) from student;
    //insert into studentdetail ..............
    mysql_query("unlock tables");
    ----------------------------------
    记住,所有的mysql_query()都要加上判断,如果你要终止,一定要为数据库解锁
      

  3.   

    shuixin13(犬犬(心帆)):
    “它取出的就是你上一条INSERT语句插入的自增值,它并不会因别的用户插入新的记录而改变的,”
    如果我写一个多线程的程序,不断向student表插入数据,然后再 SELECT Last_Insert_Id(); ,再向studentdetail表插入数据,能保证id的正确性吗?yu_dx():
    “所有的mysql_query()都要加上判断”能说说怎么判断吗?“为数据库解锁”是不是运行 mysql_query("unlock tables"); 就得了?我是初学者,不好意思。
      

  4.   

    呵呵,当然了,
    只要你在
    INSERT INTO student VALUES(null, 'name1', 'gender1', '2002-06-06');
    后没有再向student插入新的信息,而是直接运行INSERT INTO studentdetails VALUES(last_insert_id(), 'address1','postcode1','hometel1','email','parentname1',null,null,null);
      

  5.   

    shuixin13(犬犬(心帆)) :老大,再向你请教一个问题,我在studentdetails表里有一个longblob型字段photo用来存储相片的,该如何用SQL插入,能用SQL插入吗?如果不能,请教该如何处理呢?
      

  6.   

    给你一断代码,不过你要有TMySQL.Components for Delphi控件,
    URL: http://www.inprises.com/control/TMySQL.Components.v2001.1.0.0.For.Delphi.And.Kylix.Incl.Full.Source-DiSTiNCT.rar
    ====================================================================
    {本程序已实现了图像从mysql数据库存入和读出
    作者:刘志强
    image表:
    code char 10
    image longblob (*如换成blob则存储很慢)
    }
    unit Unit119;interfaceuses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
    Db, MySQLDataset, Grids, DBGrids, MySQLServer, StdCtrls, DBCtrls;type
    TForm1 = class(TForm)
    MySQLServer1: TMySQLServer;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    MySQLQuery1: TMySQLQuery;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;var
    Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
    var
    Buffer: PChar;
    fd: Integer;
    Stream: TMySQLBlobStream;
    bmp:TBitmap;
    flen:Int64;
    begin
    bmp:=TBitmap.Create;
    try
    //向Mysql表写入Bmp图像
    bmp.LoadFromFile('c:\program files\common files\borland shared\Images\Splash\256color\factory.bmp');
    MySQLQuery1.Open;
    MySQLQuery1.Append;
    MySQLQuery1.FieldByName('code').AsString:='刘志12';
    MySQLQuery1.FieldbyName('image').Assign(bmp);
    MySQLQuery1.TableName:='image';
    MySQLQuery1.post;
    //从Mysql表读出Bmp图像
    MySQLQuery1.close;
    MySQLQuery1.SQl.Clear;
    MySQLQuery1.SQL.Add('select * from image where code="刘志12"');
    MySQLQuery1.Open;MySQLQuery1.Next;
    MySQLQuery1.Edit;
    Stream := TMySQLBlobStream.Create(MySQLQuery1.FieldByName('Image') as TBlobField, bmReadWrite);
    bmp.LoadFromStream(stream);
    canvas.Draw(0,0,bmp); 
    finally
    Stream.Free;
    bmp.Free;
    end;
    end;
    end.
      

  7.   

    谢谢楼上的两位老兄,特别是热心的shuixin13(犬犬(心帆))