关于SQL创建表

来源:百度知道 编辑:UC知道 时间:2024/05/08 05:43:15
create table 客户资料表
(
客户号 char(5) primary key,
姓名 varchar(50),
性别 char(2) default '男', --check (性别 ='男' or '女'),
年龄 char(3),
资金余额 char(1000)
)

create table 资金变更表
(
客户号 char(5) primary key,
变更时间 datetime default getdate(),
变更类型 char(2) default '存',
变更金额 char(10) check 变更金额 <=客户资料表.资金余额
)

第 6 行: '变更金额' 附近有语法错误。
如何修改

变更金额 char(10) check 变更金额 <=客户资料表.资金余额

这里:check约束是不可以参考其他列的,比较值只能是常量

最多只能建立表级约束,不是列级的

create table 资金变更表
(
客户号 char(5) primary key,
变更时间 datetime default getdate(),
变更类型 char(2) default '存',
资金余额 char(1000), --把列放到这里来
变更金额 char(10), check (变更金额 <=资金余额)
)

如果表结构不能改变的话,只能用触发器实现
create trigger tr_tb1
on tb1
after insert, update, delete
as
if exists(select 1 from 客户资料表 a join 客户资料表 b
on a.客户号=b.客户号 where a.资金余额<b.变更金额)
begin
rollback tran
raiserror('资金余额<变更金额', 1,16)
end
go