我有一个员工表Employee(Em_ID,Name,password),其中Em_ID是主关键字,另外员工工资表Sala(Sa_ID,Em_ID,salary),其中Sa_ID是主关键字,Em_ID是外关键字(参考员工表的主关键字),
按正常的思路,在Sala表中插入新记录时,如果员工表Employee没有相应的EM_ID,Sala表是不能插入记录,可是问题是不管员工表Employee有没有相应的EM_ID,Sala表都能插入记录,
请问高手:问题出在前台还是后台数据库?(我的前台是Delphi,后台是Oracle9.0)如果是前台有问题,如何改正。如果是后台,又如何改正。

解决方案 »

  1. 肯定是出在后台,时间长我有些记不太清楚,应该设置em_id是参考关键字。你重新设置一下,再说。而且,你享用Pl_sql在oracle客户端测试一下,是否可以添加,不久大白于天象了吗?
      

  2. 本人认为,你可以在前台插入的时候进行判断,看Sala中的Em_ID再Employee中是否存在,不存在不能插入不就解决啦
      

  3. 后台:FOREIGN KEY (Em_ID) REFERENCES Employee(Em_ID)前台:
    最好还是在新增、修改工资的画面上,利用另一个 form 去做Employee pick up,带回 Em_ID,这样比较具亲和力
    如果新增时没有带回 (按了取消),只要你后台有加 Foreign Key constraint,那么 post 时是会拋出错误的,你可以在 OnPostError 拦截。好一点应该在 BeforePost 就检查 TField 是不是 IsNull 了
      

类似问题 »