设在SQL Server 2008中有商品表(商品号,商品名,进货价格,销售价格),现要求销售价格必须至少是进货价格的1.1倍。下列关于实现此约束的说法,正确的是( )。A.可以用触发器或者用CHECK约束实现B.只能用CHECK约束实现C.只能用触发器实现D.可以用DEFAULT约束实现

题目

设在SQL Server 2008中有商品表(商品号,商品名,进货价格,销售价格),现要求销售价格必须至少是进货价格的1.1倍。下列关于实现此约束的说法,正确的是( )。

A.可以用触发器或者用CHECK约束实现

B.只能用CHECK约束实现

C.只能用触发器实现

D.可以用DEFAULT约束实现


相似考题
更多“设在SQL Server 2008中有商品表(商品号,商品名,进货价格,销售价格),现要求销售价格必须至少是进 ”相关问题
  • 第1题:

    数据库中有Tahie_priceHistory表,结构如下表所示:

    [*]

    ①写出创建Teachers表的SQL语句,要求语句中包含所有的约束。

    ②现要查询单价最高的前三种商品的商品编号、商品名称和单价(使用TOP语句)。


    正确答案:①CREATE TABLE Table_PriceHistory( ID varchar(8) NOT NULL GoodsName varchar(20) NOT NULL StartDate datetime NOT NULL EndDate datetime NOT NULL SaleUnitPrice Money NOT NULL CHECK(EndDate>StartDate) PRIMARY KEY(IDStartDateEndDate
    ①CREATE TABLE Table_PriceHistory( ID varchar(8) NOT NULL, GoodsName varchar(20) NOT NULL, StartDate datetime NOT NULL, EndDate datetime NOT NULL, SaleUnitPrice Money NOT NULL, CHECK(EndDate>StartDate), PRIMARY KEY(ID,StartDate,EndDate

  • 第2题:

    设在SQL Server 2008某数据库中有销售表(商品号,销售时间,销售数量,销售价格),其中商品号的类型为char(6),销售价格的类型为int。现要定义统计指定商品销售总价的标量函数。有下列定义该标量函数的语句:Ⅰ.Create FUNCTION db0.GetTotal(@GoodID char(6))Returns int ASBEGINReturn(SELECT SUM(销售价格)FROM销售表WHERE商品号=@GoodID.ENDⅡ.Create FUNCTION db0.GetTotal(@GoodID char(6))Returns int ASBEGINReturns(SELECT SUM(销售价格)FROM销售表WHERE商品号=@GoodID.ENDⅢ.Create FUNCTION db0.GetTotal(@GoodID chat(6))Returns intBEGINReturn(SELECT SUM(销售价格)FROM销售表WHERE商品号=@GoodID.END1V.Create FUNCTION db0.GetTotal(@GoodID char(6))Returns intReturns(SELECT SUM(销售价格)FROM销售表WHERE商品号=@GoodID.上述语句中,正确的是( )。

    A.仅I和Ⅱ

    B.仅Ⅲ和Ⅳ

    C.仅Ⅱ和Ⅳ

    D.仅I和Ⅲ


    正确答案:D
    标量函数返回一个确定类型的标量值。函数体语句定义在BEGIN-END语句内,其中包含了可以返回值的Transact-SQL命令。创建标量函数的语法如下:CREATEFUNCTION[ownername.]function_name([{@parameter_name[AS][type_schema_name.]parameter_data_type[=default]}[,…n])RETURNSreturn_data_type[AS]BEGINfunction_bodyRETURNscalar_expressionEND[;]

  • 第3题:

    在SQL Server 2008中,设有商品表(商品号,商品名,生产日期,单价,类别)。现经常需要执行下列查询: SELECT 商品号, 商品名, 单价 FROM 商品表 WHERE 类别 IN (′食品′,′家电′) ORDER BY 商品号 现需要在商品表上建立合适的索引来提高该查询的执行效率。下列建立索引的语句,最合适的是( )。

    A.CREATE INDEX Idx1 ON 商品表(类别)

    B.CREATE INDEX Idx1 ON 商品表(商品号,商品名,单价)

    C.CREATE INDEX Idx1 ON 商品表(类别,商品号,INCLUDE (商品名,单价)

    D.CREATE INDEX Idx1 ON 商品表(商品号,INCLUDE (商品名,单价,WHERE 类别 = '食品' OR 类别 = '家电'


    正确答案:D

  • 第4题:

    SQL语句 SELECT 部门表.部门号,部门名称,商品号,商品名称,单价; FROM 部门表,商品表; WHERE 部门表.部门号=商品表.部门号; ORDER BY 部门表.部门号 DESC,单价 查询结果的第一条记录的商品号是

    A.0101

    B.0202

    C.0110

    D.0112


    正确答案:A
    解析:该SELECT语句的功能是在部门表和商品表两个表中查询,利用SUM()函数在商品表中查询各部门商品金额合计,并将结果按照部门表中的部门号降序排列,单价字段作为排序的次关键字。因此,所选出记录的商品号应该是0101,选项A是正确答案。

  • 第5题:

    在SQL Server 2008中,有商品表(商品号,商品名,单价)和销售表(商品号,销售时间,销售价格)。现要限制“销售价格”的取值必须在此商品“单价”的0.6倍到1.5倍范围之内,实现这个约束的正确代码是( )。

    A.CHECK(销售价格BETWEEN单价*0.6 AND单价*1.5)

    B.CHECK(销售价格BETWEEN商品表.单价*0.6 AND商品表.单价*1.5)

    C.CREATE TRIGGER tri_Sales ON销售表FOR INSERT,UPDATEAs IF EXISTS(SELECT*FROM INSERTED a JOIN商品表bON a.商品号=b.商品号WHERE销售价格NOT BETWEEN单价*0.6 AND单价*1.5)ROLLBACK

    D.CREATE TRIGGER tri_ales ON销售表INSTEAD OF INSERT,UPDATE ASIF EXISTS( SELECT冰FROM INSERTED a JOIN商品表bON a.商品号=b.商品号WHERE销售价格NOT BETWEEN单价*0.6 AND单价*=1.5)ROLLBACK


    正确答案:C
    FOR指定触发器只有在引发的SQL语句中指定的操作都已成功执行,并且所有的约束检查也成功完成后才执行触发器,这种触发器称为后触发型触发器。INSTEADOF指定执行触发器而不是执行引发触发器执行SQL语句,从而替代触发语句的操作,称这种触发器为前触发型触发器。