CREATE VIEW [ ALLBASE/SQL Reference Manual ] MPE/iX 5.5 Documentation
ALLBASE/SQL Reference Manual
CREATE VIEW
The CREATE VIEW statement creates a view of a table, another view, or a
combination of tables and views.
Scope
ISQL or Application Programs
SQL Syntax
CREATE VIEW [Owner.]ViewName [( ColumnName [,...])] AS QueryExpression
[IN DBEFileSetName] [WITH CHECK OPTION [CONSTRAINT ConstraintID]]
Parameters
[Owner.]ViewName is the name to be assigned to the view. One
owner cannot own more than one view with the same
name. The view name cannot bethe same as the
table name.
You can specify the owner of the new view if you
have DBA authority. Non-DBA users can specify as
owner the name of any group of which they are a
member. If you do not specify the owner name,
your DBEUserID, schema authorization name,
procedure owner, or the ISQL SET OWNER name
becomes the owner of the new table. For more
information, refer to the section "Default Owner
Rules" in the chapter "Using ALLBASE/SQL."
ColumnName specifies the names to be assigned to the columns
of the new view. The names are specified in an
order corresponding to the columns of the query
result produced by the query expression. You can
specify a maximum of 1023 columns for a view.
You must specify the column names if any column
of the query result is defined by a computed
expression, aggregate function, reserved word, or
constant in the select list of the query
expression. You must also specify column names
if the same column name (possibly from different
table) appears in the select list more than once.
If you do not specify column names, the columns
of the view are assigned the same names as the
columns from which they are derived. The * is
expanded into the appropriate list of column
names.
QueryExpression is the query expression from which the view is
derived. The select list can contain as many as
1023 columns. The query expression may refer to
tables or views or a combination of tables and
views. The query expression may include UNION
and/or UNION ALL operations.
DBEFileSetName specifies the DBEFileSet to be used for storing
the section associated with the view. If not
specified, the default SECTIONSPACE DBEFileSet is
used. (Refer to syntax for the SET DEFAULT
DBEFILESET statement.)
ConstraintID is the optional name of the view check
constraint.
Description
* A view definition with * in the select list generates a view that
refers to all the columns that exist in the base table(s) at the
time the view is created. Adding new columns to the base tables
does not cause these columns to be added to the view.
* A view is said to be updatable when you can use it in DELETE,
UPDATE, or INSERT statements to modify the base table. A view is
updatable only if the query from which it is derived matches the
following updatability criteria:
* No DISTINCT, GROUP BY, or HAVING clause is specified in the
outermost SELECT clause, and no aggregate appears in its
select list.
* The FROM clause specifies exactly one table, which must be
an updatable table. See "Updatability of Queries" in the
"SQL Queries" chapter.
* To use INSERT and UPDATE statements through views, the
select list in the view definition must not contain any
arithmetic expressions. It must contain only column names.
* For DELETE WHERE CURRENT and UPDATE WHERE CURRENT
statements operating on cursors defined with views, the
view definition must not contain subqueries.
* For noncursor UPDATE, DELETE, and INSERT statements, the
view definition must not contain any subqueries which
contain in their FROM clauses a table reference to the same
table as the outermost FROM clause.
* You cannot define an index on a view or alter a view.
* You cannot use host variables, local variables, procedure
parameters, or dynamic parameters in the CREATE VIEW statement.
* Creating a view causes a section to be stored in the system
catalog. A description of the section appears in the
SYSTEM.SECTION view.
* If you use the CREATE VIEW statement within the CREATE SCHEMA
statement, the default owner of the view is the schema's
AuthorizationName.
* When you create a view, an entry containing the SELECT statement
in the view definition is stored in the SYSTEM.VIEWDEF view in the
system catalog. The view's name is stored in SYSTEM.TABLE, and
the description of its columns appears in SYSTEM.COLUMN.
* If you use the CREATE VIEW statement with a CREATE PROCEDURE
statement, the default owner is the procedure owner.
* Any attempt to write through a view defined having a WITH CHECK
OPTION must satisfy any conditions specified in the query
specification.
All underlying view definitions are also checked. Any constraints
in the table on which the view is based are also checked.
* View check constraints are not deferrable.
* To drop a constraint on a view, you must drop the view and
recreate it without the constraint.
* You cannot use an ORDER BY clause when defining a view.
* If the IN DBEFileSetName clause is specified, but the view owner
does not have SECTIONSPACE authority for the specified DBEFileSet,
a warning is issued and the default SECTIONSPACE DBEFileSet is
used instead. (Refer to syntax for the GRANT statement and the
SET DBEFILESET statement.)
Authorization
You can create a view if you have SELECT or OWNER authority for the
tables and views mentioned in the FROM clause of the SELECT statement or
if you have DBA authority. To operate on a table on which the view is
based, the authority you need depends on whether or not you own the view.
The authority needed in either case is specified as follows:
* If you own the view, you need authority for the table(s) or
view(s) on which the view is based.
* If you do not own the view, you need authority granted
specifically for the view.
To specify a DBEFileSetName for a view, the view owner must have
SECTIONSPACE authority on the referenced DBEFileSet.
Examples
1. The following view provides information on the value of current
orders for each vendor. Because the view is derived by joining
tables, the base tables cannot be updated via this view.
CREATE VIEW PurchDB.VendorStatistics
(VendorNumber,
VendorName,
OrderDate,
OrderQuantity,
TotalPrice)
AS SELECT PurchDB.Vendors.VendorNumber,
PurchDB.Vendors.VendorName,
OrderDate,
OrderQty,
OrderQty*PurchasePrice
FROM PurchDB.Vendors,
PurchDB.Orders,
PurchDB.OrderItems
WHERE PurchDB.Vendors.VendorNumber =
PurchDB.Orders.VendorNumber
AND PurchDB.Orders.OrderNumber =
PurchDB.OrderItems.OrderNumber
IN PurchDBFileSet
2. The following view is updatable because it is created from one
table. When the table is updated through the view, column values
in the SET or VALUES clause are checked against the WHERE clause
in the view definitions. If the table on which the view is based
has any check constraints of its own, these conditions are checked
along with the WITH CHECK OPTION of the view.
CREATE VIEW RecDB.EventView
(Event,
Date)
AS SELECT RecDB.Event,
RecDB.Date
FROM RecDB.Events
WHERE Date >= CURRENT_DATE
WITH CHECK OPTION CONSTRAINT EventView_WCO
MPE/iX 5.5 Documentation