Создание Таблиц В Sql Server

Тема в разделе "SQL", создана пользователем oopa, 23 янв 2013.

  1. oopa

    oopa Member

    Регистрация:
    30 июн 2010
    Сообщения:
    13
    Симпатии:
    0
    помогите пожал.

    Меня отовсюду прогнали со всех крупных форумов из за тупизны формулировки задачи или еще то чего там, так и не объяснили.

    задача такая:
    нужно создать 2 таблицы с одинаковым кол-вом столбцов и с одинаковыми названиями столбцов.
    при этом в каждый столбец этих таблиц должно добавляться n-строк.
    Значения строк не заданы, так как они будут появляться по мере ввода каждой строки. Известны только типы значений char date и char.

    при этом кол-во строк которое добавляется в 1 таблицу
    должно автоматически добавляться в другую, так как названия столбцов у этих 2-х таблиц одинаковые и значения должны совпадать.

    вот решение, скорее всего оно неверное:

    USE [notarius]
    GO

    /****** Object: Table [dbo].[Table_1] Script Date: 01/12/2013 13:42:52 ******/
    SET ANSI_NULLS ON
    GO

    SET QUOTED_IDENTIFIER ON
    GO

    SET ANSI_PADDING ON
    GO

    CREATE TABLE [dbo].[Table_1](
    m_id int not null identity primary key,
    [Ф.И.О. наследодателя] [char](50) NULL,
    UniqueValue int null,
    UniqueKey as isnull(UniqueValue, [Ф.И.О. наследодателя]) persisted,
    check (UniqueValue >= 0),
    unique (UniqueKey),
    [дата смерти] [date] NULL,
    [паспортные данные] [char](50) NULL);
    GO

    create table [dbo].[инф-ция о наследодателе_1]
    (n_id int not null identity primary key,
    [Ф.И.О. наследодателя] [char](50) NULL,
    UniqueKey int null references [dbo].[Table_1] (UniqueKey) on update cascade,
    [дата смерти] [date] NULL,
    [паспортные данные] [char](50) NULL);
    go

    declare @t table (m_id int, UniqueKey int);

    insert into [dbo].[Table_1]
    output
    inserted.m_id, inserted.UniqueKey into @t (m_id, UniqueKey)
    default values;

    insert into [dbo].[инф-ция о наследодателе_1]
    (UniqueKey)
    select
    UniqueKey
    from
    @t;

    update m_id
    set
    UniqueValue = 10
    from
    @t t join
    [dbo].[Table_1] m_id on m_id.m_id = t.m_id;

    select * from [dbo].[Table_1];
    select * from [dbo].[инф-ция о наследодателе_1];
    go

    insert into [dbo].[Table_1]
    default values;
    go

    insert into [dbo].[инф-ция о наследодателе_1]
    default values;
    go

    drop table [dbo].[инф-ция о наследодателе_1], [dbo].[Table_1];
    go


    результат:

    m_id Ф.И.О. наследодателя UniqueValue UniqueKey дата смерти паспортные данные
    1 NULL 10 10 NULL NULL

    n_id Ф.И.О. наследодателя UniqueKey дата смерти паспортные данные
    1 NULL NULL NULL NULL

    я не знаю как проверить результат, вот совет:
    1. для проверки надо добавить данные для одного человека (которого точно не было раньше в базе) через интерфейс, например, с фамилией ЦЫЧУВС
    2. найти этого человека в первой таблице: select * from table1 where fio='ЦЫЧУВС'
    3. если такой человек найден, из таблицы отобразятся все введенные по нему данные, тогда п.4 иначе п.6
    4. убедиться, что этот человек автоматически добавился во вторую таблицу: select * from table2 where fio='ЦЫЧУВС'
    5. Если сервер выдаст те же данные что и в п.2 - все работает правильно и больше ничего делать не нужно, иначе п.6
    6. Искать ошибку в программе

    как это сделать через интерфейс? как проверить результат через интерфейс?
     
Загрузка...

Поделиться этой страницей