INSERT INTO client(c_id,c_name,c_mail,c_id_card,c_phone,c_password) VALUES (31,'李丽','lili@huawei.com','340211199301010005','18815650005','gaussdb_005');
复制代码
错误信息如下:
说明:由于在表的创建过程中,实验定义了c_id_card和c_phone为唯一且非空(UNIQUE NOT NULL),所以当表中存在时,插入数据失败。
5.2.插入乐成的场景
在金融数据库的客户信息表中添加一个客户的信息:
INSERT INTO client(c_id,c_name,c_mail,c_id_card,c_phone,c_password) VALUES (31,'李丽','lili@huawei.com','340211199301010031','18815650031','gaussdb_031');
select * from client where c_id=31;
复制代码
显示如下即表示添加乐成:
6.添加束缚
6.1.向finances_product表添加束缚
为finances_product表的p_amount列添加大于等于0的束缚:
ALTER table finances_product ADD CONSTRAINT c_p_mount CHECK (p_amount >=0);
复制代码
6.2.插入数据测试
实验手工插入一条金额小于0的记载:
INSERT INTO finances_product(p_name,p_id,p_description,p_amount,p_year) VALUES ('信贷资产',10,'一般指银行作为委托人将通过发行理财产品募集资金委托给信托公司,信托公司作为受托人成立信托计划,将信托资产购买理财产品发售银行或第三方信贷资产。',-10,6);
复制代码
执行失败,如下图所示:
6.3.向fund表添加束缚
为fund表的f_amount列添加大于等于0的束缚:
ALTER table fund ADD CONSTRAINT c_f_mount CHECK (f_amount >=0);
复制代码
6.4.向insurance表添加束缚
为insurance表的i_amount列添加大于等于0的束缚:
ALTER table insurance ADD CONSTRAINT c_i_mount CHECK (i_amount >=0);
复制代码
6.5.验证束缚的创建结果
select conname,connamespace,contype from pg_constraint where conrelid in (select oid from pg_class where relname in ('fund','insurance'));
CREATE VIEW v_client as SELECT c_id,c_name,c_id_card FROM client WHERE EXISTS (SELECT * FROM bank_card WHERE client.c_id = bank_card.b_c_id);
复制代码
使用视图进行查询:
SELECT * FROM v_client;
复制代码
8.2.修改视图内容
修改视图,在原有查询的基础上,过滤出名誉卡用户:
CREATE OR REPLACE VIEW v_client as SELECT c_id,c_name,c_id_card FROM client WHERE EXISTS (SELECT * FROM bank_card WHERE client.c_id = bank_card.b_c_id and bank_card.b_type='信用卡');