sql server 2005数据库中表B以表A为外键,那么表B中的某一列的默认值能用表A的某一列吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql server 2005数据库中表B以表A为外键,那么表B中的某一列的默认值能用表A的某一列吗?相关的知识,希望对你有一定的参考价值。

我的表格结构是这样的:
--创建宿舍楼房表
create table House
(
HouseId int identity(1,1) primary key not null,
HouseNO varchar(10) not null, --栋号
HouseRoom varchar(10) not null, --房号
HouseMan int not null, --能容人数
HouseSex varchar(10) not null, --性别
HouseTel int not null --电话
)

--创建宿舍房间表
create table Room
(
RoomId int identity(1,1) primary key not null,
RoomIn int default(0) not null, --居住人数
RoomNull int default(不知道怎么写) not null, --空缺人数
RoomWater float not null, --水表底数
RoomWire float not null, --电表底数
RoomCost float not null, --宿舍费用
HouseId int foreign key references House(HouseId) not null
)

现在我想用 表Room中的RoomNull列 的默认值为 表House中的HouseMan列。可以这样做吗?那位大侠能够帮我解决一下?

create procedure mymod
@status varchar(20),
@EffectiveDate datetime,
@PercentCompletion float
AS
BEGIN
declare @id integer,@st varchar(20);
select top 1 @id=ProjectCompletionID,@st=status from Projects
order by ProjectCompletionID desc;
update Projects
set Status=@status
where ProjectCompletionID=@id;
insert int Projects select @id+1,@EffectiveDate,@PercentCompletion,@st;
commit;
END

---如果ProjectCompletionID是自增长,则不需要列入到增加列,
所有字段类型根据实际确定修改
参考技术A RoomNull 不是外键 参考技术B 创建视图不就可以了 参考技术C 这个问题,不应该在数据库层面解决,应该是在你的业务逻辑里面解决。
当你Create一个Room时,应该会有以下步骤
1、选择一个Room所在的House
2、读取所选House的HouseID、HouseMan
3、将HouseMan和HouseID赋值到你要创建的Room实体,
4、添加Room实体的其他属性,比如 RoomCost
5、将Room实体持久化保存到数据库。
其中第2和3步,就能解决你的问题了。

已安装 SQL Server 2005,安装 SQL Server 2008 时提示需要删除 SQL Server 2005 Express 工具

修改注册表:

(1)32位路径:HKLM\Software\Microsoft\Microsoft SQL Server\90\Tools\ShellSEM,把ShellSEM重命名即可。

(2)64位路径:HKLM\Software\Wow6432Node\Microsoft\Microsoft SQL Server\90\Tools\ShellSEM

以上是关于sql server 2005数据库中表B以表A为外键,那么表B中的某一列的默认值能用表A的某一列吗?的主要内容,如果未能解决你的问题,请参考以下文章

SQL 关联两个表的视图总结

Sql Server 2005中当两个整型字段中一个为空时如何比较大小?

SQl Server 2005怎么批量替换用户名

菜鸟 急求SQL数据查询问题 在线等

SQL Server 2005:将 varchar 值“1.23E-4”转换为十进制失败

sql server 2005 跨数据库操作