重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
首先安装gcc gcc-c++
创新互联于2013年开始,是专业互联网技术服务公司,拥有项目网站设计制作、做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元剑河做网站,已为上家服务,为剑河各地企业和个人服务,联系电话:028-86922220
yum –y install gcc gcc-c++
tarzxvf postgresql-8.4.17.tar.gz
cd postgresql-8.4.17
./configure --prefix=/usr/local/pgsql (当提示有错时,根据提示加参数如:--without-readline --without-zlib)
make make install
创建postgres用户useradd postgres
su - postgres
cd /usr/local/pgsql/bin
./initdb -D /home/postgres/data
./pg_ctl -D /home/postgres/data start
启动pgsql的另一种方式是使用用脚本,比较方便,不用切换到postgres用户,root用户也可以启动,方法如下:
cp postgresql-8.4.17/contrib/start-scripts/linux /root/pgsql.sh
vi pgsql.sh
将PGDATA="/usr/local/pgsql/data"修改为 PGDATA="/home/postgres/data"
chmod +x pgsql.sh
./pgsql.sh start
其中和start相类似的参数有stop, status, restart
错误代码中已经提示了使用perform来替代,说明你的select语句,就必须写到一个变量中。
$$
declare v_cmd text;
begin
v_cmd='select count(*) from "user" where username=$1 and password=$2';
PERFORM exec_shell(v_cmd);
按照这个去修改,这样就可以了,同时建立一个exec_shell()的函数。
CREATE OR REPLACE FUNCTION exec_shell(character varying)
RETURNS integer AS
$BODY$
system($_[0]);
return 1;
$BODY$
LANGUAGE plperlu VOLATILE
COST 1;
1、
ALTER TABLE 采购定单表
ADD CONSTRAINT chk_采购定单表_付款方式
CHECK ( 付款方式 IN ( '牡丹卡', '金穗卡', '龙卡', '阳光卡' ) );
如果书中提供示例是:
NOT (付款方式='信用卡') OR (信用卡 IN ('牡丹卡','金穗卡','龙卡','阳光卡'))
那么可以看出, 采购定单表 中有 “付款方式” 与 “信用卡” 这两列。
也就是 约束条件为
NOT (付款方式='信用卡')
意思是: 付款方式不是 信用卡。
OR (信用卡 IN ('牡丹卡','金穗卡','龙卡','阳光卡'))
意思就是: 付款方式是 信用卡的情况下, 信用卡需要是哪些 卡。
至于你觉得应该是:(付款方式='信用卡') AND (信用卡 IN ('牡丹卡','金穗卡','龙卡','阳光卡'))
那么这个 付款方式, 只能是 信用卡了, 你要支付现金的话, 没法处理了。
2、D
原因:
排除法分析。
假如 学生表的 Scode = '001201' 的数据, 在 Score 表里面 , 一行数据也没有。
那么更新是不会出错的。 因此 A 不正确。
Scode列是 主键, 因此, 不会更新2行数据, 因此 B 不正确。
如果 存在有 Scode = '001201' 的数据, 且 Score 表存在一行关联数据。
并且 这个外键是 UPDATE CASCADE 的情况下。
那么 更新 Students 表, 会同时更新 Score 表。
但是由于不知道是什么数据库。
因为 Oracle 和 DB2 , 好像是不支持 UPDATE CASCADE 的。
SQL Server, MySQL, SQLite , PostgreSQL 支持 UPDATE CASCADE 。
但是题目上面没有明确说明, 这个外键是 UPDATE CASCADE
因此这个 C 只能是 如果其他几个都错的情况下, 才选择 C.
如果 存在有 Scode = '001201' 的数据, 且 Score 表无数据,那么就会更新一行数据。
如果不存在 Scode = '001201' 的数据, 那么一行也不会更新。
因此, 可能会更新Students表中的一行数据。
也就是最后
如果题目是 单选的话, 就选D。
多选的话, 如果明确 不是 Oracle 或者 DB2 数据库的, 可以选择 C, D
表里哪有名为 column 的字段?
再说,column是postgresql (及其它许多数据库)的关键字,不能做为字段名。
Column是指这个表的字段这一列,并不是说这个表有一列叫column,看仔细了。
错误提示的意思是没有对character和integer类型的值进行比较的操作符。也就是说在where条件中有等于号两边的类型不同,一个为charcter,一个为interger。如果需要比较的话,需要转换成同类型的值(比如转换成character或转换成integer)再做比较。
这种情况最好是每个设备增加一个表,只存储当前最新的一条数据,每次有新数据来,删除之前的数据,插入最新一条数据。这样查询时,查最新表,仅一条数据,速度很快