本问题涉及到多表级联的问题。现将关键代码贴出来,望大家能给予帮助,谢谢。问题在源码中。
//-------------------
lAddtable:='create table ghs_table'+
'('+
'[ghs_name] varchar(40) PRIMARY KEY'+//供货商名称
')';
sqlexec(SVRdm.sCreadata,lAddtable,0);//创建表 lAddtable:='create table vip_table'+
'('+
'[VIP_card] varchar(30) PRIMARY KEY'+//会员卡号
')';
sqlexec(SVRdm.sCreadata,lAddtable,0);//创建表 lAddtable:='create table store_table'+
'('+
'[ID] numeric(20) PRIMARY KEY'+//分类
')';
sqlexec(SVRdm.sCreadata,lAddtable,0);//创建表lAddtable:='create table sp_table'+
'('+
'[sp_bh] varchar(30) PRIMARY KEY,'+//商品编号,主键
'[sp_ghs] varchar(40) REFERENCES ghs_table(ghs_name) ON UPDATE CASCADE,'+
'[NodeKey] numeric(20) REFERENCES store_table(ID) ON UPDATE CASCADE'+
')';
sqlexec(SVRdm.sCreadata,lAddtable,0);//创建表lAddtable:='create table ls_table'+
'('+
{问题:就是下面这一行为什么不能级联到sp_table表的sp_bh字段,其他的都可以}
'[ls_bh] varchar(30) REFERENCES sp_table(sp_bh) ON UPDATE CASCADE,'+ //商品编号
'[ls_HuiYuanCard] varchar(30) REFERENCES vip_table(VIP_card) ON UPDATE CASCADE,'+//会员卡号:
'[ls_ghs] varchar(40) REFERENCES ghs_table(ghs_name) ON UPDATE CASCADE,'+//商品的供货商
'[NodeKey] numeric(20) REFERENCES store_table(ID) ON UPDATE CASCADE'+//子类的节点KEY值
')';
sqlexec(SVRdm.sCreadata,lAddtable,0);//创建表在mssql2000企业管理器测试返回以下错误信息:
'sp_table' 表成功保存
'ls_table' 表
- 不能创建关系 'FK__ls_table__ls_bh__09DE7BCC'。
ODBC 错误: [Microsoft][ODBC SQL Server Driver][SQL Server]将 FOREIGN KEY 约束 'FK__ls_table__ls_bh__09DE7BCC' 引入表 'ls_table' 中将导致循环或多重级联路径。请指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其它 FOREIGN KEY 约束。
[Microsoft][ODBC SQL Server Driver][SQL Server]未能创建约束。请参阅前面的错误信息。
//-------------------
//-------------------
lAddtable:='create table ghs_table'+
'('+
'[ghs_name] varchar(40) PRIMARY KEY'+//供货商名称
')';
sqlexec(SVRdm.sCreadata,lAddtable,0);//创建表 lAddtable:='create table vip_table'+
'('+
'[VIP_card] varchar(30) PRIMARY KEY'+//会员卡号
')';
sqlexec(SVRdm.sCreadata,lAddtable,0);//创建表 lAddtable:='create table store_table'+
'('+
'[ID] numeric(20) PRIMARY KEY'+//分类
')';
sqlexec(SVRdm.sCreadata,lAddtable,0);//创建表lAddtable:='create table sp_table'+
'('+
'[sp_bh] varchar(30) PRIMARY KEY,'+//商品编号,主键
'[sp_ghs] varchar(40) REFERENCES ghs_table(ghs_name) ON UPDATE CASCADE,'+
'[NodeKey] numeric(20) REFERENCES store_table(ID) ON UPDATE CASCADE'+
')';
sqlexec(SVRdm.sCreadata,lAddtable,0);//创建表lAddtable:='create table ls_table'+
'('+
{问题:就是下面这一行为什么不能级联到sp_table表的sp_bh字段,其他的都可以}
'[ls_bh] varchar(30) REFERENCES sp_table(sp_bh) ON UPDATE CASCADE,'+ //商品编号
'[ls_HuiYuanCard] varchar(30) REFERENCES vip_table(VIP_card) ON UPDATE CASCADE,'+//会员卡号:
'[ls_ghs] varchar(40) REFERENCES ghs_table(ghs_name) ON UPDATE CASCADE,'+//商品的供货商
'[NodeKey] numeric(20) REFERENCES store_table(ID) ON UPDATE CASCADE'+//子类的节点KEY值
')';
sqlexec(SVRdm.sCreadata,lAddtable,0);//创建表在mssql2000企业管理器测试返回以下错误信息:
'sp_table' 表成功保存
'ls_table' 表
- 不能创建关系 'FK__ls_table__ls_bh__09DE7BCC'。
ODBC 错误: [Microsoft][ODBC SQL Server Driver][SQL Server]将 FOREIGN KEY 约束 'FK__ls_table__ls_bh__09DE7BCC' 引入表 'ls_table' 中将导致循环或多重级联路径。请指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其它 FOREIGN KEY 约束。
[Microsoft][ODBC SQL Server Driver][SQL Server]未能创建约束。请参阅前面的错误信息。
//-------------------
解决方案 »
- createOleObject('Excel.Application');运行报错
- 100分求解,如下格式!!!
- 如何设置dbgrideh的属性使得可以在dbgrideh中显示imagelist中的图片???
- 我在Form1的onCreare事件里面写:Form1.caption:='我的窗体'; 为什么窗体启动后在蓝色控制条上不显示‘我的窗体'这几个字呢
- 请yczyk有鬼进来接分!感谢你的帮忙!
- 尝试做一个木马查杀程序,如何收集木马特征库???
- 欢迎键入qq群95567057,讨论Intraweb
- 大家赶快来分享一下
- 请问用web services开发的dll如何在主机上注册?谢谢!
- 谁知道哪里能下载delphi的installshield么?for 5.0的,多谢
- DBGrid的显示问题!
- 用什么语句可以让程序在已有的数据库文件中建立一个新表?
//-------------------
lAddtable:='create table ghs_table'+
'('+
'[ghs_name] varchar(40) PRIMARY KEY'+//供货商名称
')';
sqlexec(SVRdm.sCreadata,lAddtable,0);//创建表 lAddtable:='create table vip_table'+
'('+
'[VIP_card] varchar(30) PRIMARY KEY'+//会员卡号
')';
sqlexec(SVRdm.sCreadata,lAddtable,0);//创建表 lAddtable:='create table store_table'+
'('+
'[ID] numeric(20) PRIMARY KEY'+//分类
')';
sqlexec(SVRdm.sCreadata,lAddtable,0);//创建表lAddtable:='create table sp_table'+
'('+
'[sp_bh] varchar(30) PRIMARY KEY,'+//商品编号,主键
'[sp_ghs] varchar(40) REFERENCES ghs_table(ghs_name) ON UPDATE CASCADE,'+
'[NodeKey] numeric(20) REFERENCES store_table(ID) ON UPDATE CASCADE'+
')';
sqlexec(SVRdm.sCreadata,lAddtable,0);//创建表lAddtable:='create table ls_table'+
'('+
{问题:就是下面这一行为什么不能级联到sp_table表的sp_bh字段,其他的都可以}
'[ls_bh] varchar(30) REFERENCES sp_table(sp_bh) ON UPDATE CASCADE,'+ {这里级联不了}
'[ls_HuiYuanCard] varchar(30) REFERENCES vip_table(VIP_card) ON UPDATE CASCADE,'+//会员卡号:
'[ls_ghs] varchar(40) REFERENCES ghs_table(ghs_name) ON UPDATE CASCADE,'+//商品的供货商
'[NodeKey] numeric(20) REFERENCES store_table(ID) ON UPDATE CASCADE'+//子类的节点KEY值
')';
sqlexec(SVRdm.sCreadata,lAddtable,0);//创建表
//-------------------
lAddtable:='create table sp_table'+
'('+
'[sp_bh] varchar(30) PRIMARY KEY,'+//商品编号,主键
'[sp_ghs] varchar(40) REFERENCES ghs_table(ghs_name) ON UPDATE CASCADE,'+
'[NodeKey] numeric(20) REFERENCES store_table(ID) ON UPDATE CASCADE'+
')';
lAddtable:='create table ls_table'+
'('+
{问题:就是下面这一行为什么不能级联到sp_table表的sp_bh字段,其他的都可以}
'[ls_bh] varchar(30) REFERENCES sp_table(sp_bh) ON UPDATE CASCADE,'+ {这里级联不了}
'[ls_HuiYuanCard] varchar(30) REFERENCES vip_table(VIP_card) ON UPDATE CASCADE,'+//会员卡号:
'[ls_ghs] varchar(40) REFERENCES ghs_table(ghs_name) ON UPDATE CASCADE,'+//商品的供货商
'[NodeKey] numeric(20) REFERENCES store_table(ID) ON UPDATE CASCADE'+//子类的节点KEY值
')';望能帮助。谢谢