创建视图并且不应允许任何数据操作语言操作
Create a view and should not allow any data manipulation language operations
问:创建一个名为 TITLE_NOTRETURNED
的视图来显示电影标题和
media_id 的媒体尚未 return 编辑。视图不应允许任何数据操作语言操作。
我需要创建视图作为附加问题,但 return 错误是我缺少表达式。
租赁历史table:
出租日期,return日期
媒体table:
媒体 ID、格式
电影table:
标题id,标题
我的代码:
CREATE VIEW TITLE_NOTRETURNED AS
SELECT mov.title, m.mediaid, r.rentaldate
FROM Movies mov, Media m, rental_history r
WHERE mov.titleid = m.titleid
AND m.mediaid = r.mediaid
AND r.returndate > (SELECT CONVERT(DATE, getdate() )
);
另外,我之前试过把rental_history r改成rentaldate r,但是也不行。
ERD:
如果这是 Oracle,它给出 ORA-00936: 缺少表达式 因为
select convert(date, getdate())
缺少 from
子句。
一旦你解决了这个问题,convert
is for character sets, not dates, date
is a keyword for introducing a date literal 比如 date '2020-12-23'
,并且没有 getdate()
函数(除非你自己写了一个)。
固定版本(包括防止 DML 的要求)为:
create or replace view title_not_returned as
select mov.title, m.mediaid, r.rentaldate
from movies mov
join media m on m.titleid = mov.titleid
join rental_history r on r.mediaid = m.mediaid
where r.returndate > trunc(sysdate)
with read only;
顺便问一下,租赁 return 日期是如何填充的?如果它们默认为某个遥远的未来日期,例如 9999 年 12 月 31 日,然后在 returned 时更新为实际日期,这将起作用(但也许应该在视图中使用特殊日期)。如果它们开始时为空,表示尚未 returned,您将不会得到任何结果。
问:创建一个名为 TITLE_NOTRETURNED
的视图来显示电影标题和
media_id 的媒体尚未 return 编辑。视图不应允许任何数据操作语言操作。
我需要创建视图作为附加问题,但 return 错误是我缺少表达式。
租赁历史table: 出租日期,return日期
媒体table: 媒体 ID、格式
电影table: 标题id,标题
我的代码:
CREATE VIEW TITLE_NOTRETURNED AS
SELECT mov.title, m.mediaid, r.rentaldate
FROM Movies mov, Media m, rental_history r
WHERE mov.titleid = m.titleid
AND m.mediaid = r.mediaid
AND r.returndate > (SELECT CONVERT(DATE, getdate() )
);
另外,我之前试过把rental_history r改成rentaldate r,但是也不行。
ERD:
如果这是 Oracle,它给出 ORA-00936: 缺少表达式 因为
select convert(date, getdate())
缺少 from
子句。
一旦你解决了这个问题,convert
is for character sets, not dates, date
is a keyword for introducing a date literal 比如 date '2020-12-23'
,并且没有 getdate()
函数(除非你自己写了一个)。
固定版本(包括防止 DML 的要求)为:
create or replace view title_not_returned as
select mov.title, m.mediaid, r.rentaldate
from movies mov
join media m on m.titleid = mov.titleid
join rental_history r on r.mediaid = m.mediaid
where r.returndate > trunc(sysdate)
with read only;
顺便问一下,租赁 return 日期是如何填充的?如果它们默认为某个遥远的未来日期,例如 9999 年 12 月 31 日,然后在 returned 时更新为实际日期,这将起作用(但也许应该在视图中使用特殊日期)。如果它们开始时为空,表示尚未 returned,您将不会得到任何结果。