O
oopa
помогите пожал.
Меня отовсюду прогнали со всех крупных форумов из за тупизны формулировки задачи или еще то чего там, так и не объяснили.
задача такая:
нужно создать 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. Искать ошибку в программе
как это сделать через интерфейс? как проверить результат через интерфейс?
Меня отовсюду прогнали со всех крупных форумов из за тупизны формулировки задачи или еще то чего там, так и не объяснили.
задача такая:
нужно создать 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. Искать ошибку в программе
как это сделать через интерфейс? как проверить результат через интерфейс?