在使用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字符串进行操作的方式可以解决这个问题,
没办法,只好这样了。
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字符串进行操作的方式可以解决这个问题,
没办法,只好这样了。