Возможно, что вы хотели сделать (при условии, что столбцы одинаковые):
ALTER VIEW view_name
AS
SELECT col1, col2 FROM table1_name
UNION ALL
SELECT col1, col2 FROM table2_name
Как указал Джо, вы не вставляете данные в представление - они не сохраняются (если только они не проиндексированы, и в этом случае вы фактически не вставляете в представление).
Если вы хотите обновить представление для новых таблиц, вы можете сделать что-то вроде этого. Я предполагаю, что вы работаете на SQL Server 2005 или выше - если ваша школа учит вас SQL Server 2000, позор им. Я также предполагаю пару других вещей ... ваш взгляд не содержит завершающего оператора-терминатора (единственный раз, когда я бы выступал за его исключение), и что у вас нет всякой ерунды в комментариях раньше команда CREATE VIEW.
CREATE PROCEDURE dbo.AddTableToView
@view SYSNAME,
@new_table SYSNAME
AS
BEGIN
SET NOCOUNT ON;
DECLARE @sql NVARCHAR(MAX);
SELECT @sql = [definition] FROM sys.sql_modules
WHERE [object_id] = OBJECT_ID(@view);
SELECT @sql = STUFF(@sql, CHARINDEX('CREATE VIEW', @sql), 6, 'ALTER')
+ 'UNION ALL
SELECT col1, col2 FROM ' + @new_table;
EXEC sp_executeSQL @sql;
END
GO
Но, как я предположил в комментариях, это действительно не тот путь, которым вы хотели, и я подозреваю, что ваш профессор будет чувствовать то же самое.