使用query控键删除表中的记录,那表必须要有一列为关键字(1、2、3…………)么?或者表不能与其它表相关链么,对于有外键的表通过什么来删除记录?我的表中记录,总在变动,关键字会很大的,可不可以不建立关键字而删除表中的记录

解决方案 »

  1.   

    这样写可以么 sqlstr:='delete * from base_m2r  where module_id=(select base_m2r.module_id from base_m2r, base_role where base_m2r.role_id=base_role.role_id and base_role.role_name='''+combobox1.items.text+'''+)';
        if query1.Active then
          query1.Active:=false;
          query1.sql.clear;
           query1.SQL.Add(sqlstr);
           query1.execsql;
      

  2.   

    自己要学会调试,你把你的sqlstr里的内容COPY到SQL-EXPLORE里试试不就知道了吗,你写的基本上正确
      

  3.   

    在做数据库的程序,数据的完整型,安全,一至性是最重要的。
    所以一定要建立外键约束+事务提交,出错的时候on except,来抓就行了。
      

  4.   

    我不太理解
    我是想不建立主键而删除表中的记录
    query1.close;
    query1.SQL.Add('delete from base_m2r where role_id=:parm');
               query1.Params[0].AsString:=''''+test+'''';
               query1.ExecSQL;
    test是字符串变量,role_id是char型的,这个表没有主键,能删除么