您的位置:首页 > 编程语言 > Delphi

Delphi使用TADOQuery时,Guid外键字段的困扰

2006-10-17 01:25 260 查看
在使用Guid字段时,如果不小心设置有默认值,将使数据更新产生很大的问题,

EXEC sp_addtype N'u_id', N'uniqueidentifier', N'null'
EXEC sp_bindefault N'[dbo].[Default_ID]', N'[u_id]'

create table 教师(
教师GUID u_id not null,
编号 varchar(10),
姓名 varchar(10)
)
go
ALTER TABLE [dbo].[教师] ADD
PRIMARY KEY NONCLUSTERED
(
[教师GUID]
) ON [PRIMARY]
GO

create table 班级(
班级GUID u_id not null,
编号 varchar(10),
班主任GUID u_id
)
go
ALTER TABLE [dbo].[班级] ADD
PRIMARY KEY NONCLUSTERED
(
[班级GUID]
) ON [PRIMARY]
GO
--建立外键连接
ALTER TABLE [dbo].[班级] ADD
FOREIGN KEY
(
[教师GUID]
) REFERENCES [dbo].[教师] (
[教师GUID]
)

如果在表中维护[班级]数据,使用TADOQuery的进行更新时,将出现主键不匹配的错误:
var
adoTeacher, adoClass: TADOQuery;
begin
打开adoTeacher数据.....
打开adoClass数据.....
adoClass.append;
adoClass.fieldbyname('班主任GUID').asstring=adoTeacher.FieldByName('教师GUID').AsString;
adoClass.Post;
adoClass.UpdatePatch; //这时将提示外键错误!!!!

象这种情况偶没有办法解决,不知道有谁会去解决呢?我试过用SQL字符串进行操作的方式可以解决这个问题,
没办法,只好这样了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐