Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4   вперед  Ctrl      все
 Re: значения строк ключевого столбца  [new]
insomniahhhhh
Member

Откуда:
Сообщений: 116
invm
О, Господи...

Вам нужно сделать одну таблицу "Справочник наследодателей"
create table dbo.[Справочник наследодателей]
(
 id_наследодателя int not null identity primary key,
 [Ф.И.О.] varchar(100) not null, 
 [Паспортные данные] varchar(500) not null,
 [Дата смерти] date null 
);
Это грубая схема, ибо ФИО надо разносить на 3 столбца, а паспортные данные выносить в отдельную таблицу.
Затем уже используйте этот справочник, где требуется:
create table dbo.Table1
(
 ...
 id_наследодателя int null references dbo.[Справочник наследодателей] (id_наследодателя),
 ...
);





create table dbo.Table2
(
 ...
 id_наследодателя int null references dbo.[Справочник наследодателей] (id_наследодателя),
 ...
);


ФИО совершенно точно не надо разбивать. а 3-я таблица мне кажется не рационально.
здесь нужно 1-ую таблицу связать со 2-ой.
весь вопрос как.
при выполнении запроса сервер не дает мне столбцам присвоить значения not null кроме ключевого конечно,
и выскакивает ошибка. насколько я знаю NULL это означает неизвестные значения, что собственно мне и нужно чтобы вводить потом эти значения.

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

create table [dbo].[инф-ция о наследодателе_1]
( [Ф.И.О. наследодателя] [char](50) NOT NULL identity primary key,
UniqueKey [char](50) not null references [dbo].[Table_1] (UniqueKey) on update cascade,
[дата смерти] [date] NULL,
[паспортные данные] [char](50) NULL);
go
15 янв 13, 16:00    [13773110]     Ответить | Цитировать Сообщить модератору
 Re: значения строк ключевого столбца  [new]
Гость333
Member

Откуда:
Сообщений: 3683
insomniahhhhh
Гость333
Опишите, кстати, что хранится в этих двух таблицах. И чем они отличаются.


вот они:
1-ая таблица [dbo].[Table_1]:
...
и вторая таблица [dbo].[инф-ция о наследодателе_1]:
...

Вы лучше русским языком опишите. Типа — в одной таблице хранится информация о наследодателе (ФИО, номер паспорта и т.д.), в другой таблице — информация о наследниках (ФИО, номер паспорта, ФИО наследодателя и т.д.). Пока что совершенно непонятно, зачем вам две таблицы [Table_1] и [инф-ция о наследодателе_1], в каких случаях используется первая или вторая таблица, и т.д.
15 янв 13, 16:02    [13773121]     Ответить | Цитировать Сообщить модератору
 Re: значения строк ключевого столбца  [new]
insomniahhhhh
Member

Откуда:
Сообщений: 116
Гость333
insomniahhhhh
пропущено...


вот они:
1-ая таблица [dbo].[Table_1]:
...
и вторая таблица [dbo].[инф-ция о наследодателе_1]:
...

Вы лучше русским языком опишите. Типа — в одной таблице хранится информация о наследодателе (ФИО, номер паспорта и т.д.), в другой таблице — информация о наследниках (ФИО, номер паспорта, ФИО наследодателя и т.д.). Пока что совершенно непонятно, зачем вам две таблицы [Table_1] и [инф-ция о наследодателе_1], в каких случаях используется первая или вторая таблица, и т.д.


по моему все и так ясно, что еще объяснять?
одни и теже данные в 2-х таблицах. нужны 2 таблицы. в одну будут вводиться и храниться данные, в другой теже данные будут изменяться
15 янв 13, 16:39    [13773390]     Ответить | Цитировать Сообщить модератору
 Re: значения строк ключевого столбца  [new]
Гость333
Member

Откуда:
Сообщений: 3683
insomniahhhhh
нужны 2 таблицы. в одну будут вводиться и храниться данные, в другой теже данные будут изменяться

Вводите, храните и изменяйте данные в одной таблице. Вторая не нужна.
15 янв 13, 16:46    [13773437]     Ответить | Цитировать Сообщить модератору
 Re: значения строк ключевого столбца  [new]
qwerty112
Guest
insomniahhhhh
Гость333
пропущено...

Вы лучше русским языком опишите. Типа — в одной таблице хранится информация о наследодателе (ФИО, номер паспорта и т.д.), в другой таблице — информация о наследниках (ФИО, номер паспорта, ФИО наследодателя и т.д.). Пока что совершенно непонятно, зачем вам две таблицы [Table_1] и [инф-ция о наследодателе_1], в каких случаях используется первая или вторая таблица, и т.д.


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

делайте сразу 3-и !
в одну - вводить, во второй - изменять, а из 3-ей - делать выборки ! :)
15 янв 13, 16:51    [13773497]     Ответить | Цитировать Сообщить модератору
 Re: значения строк ключевого столбца  [new]
Glory
Member

Откуда:
Сообщений: 104751
qwerty112
в одну - вводить, во второй - изменять, а из 3-ей - делать выборки ! :)

Из 4ой - удалять )
15 янв 13, 16:53    [13773517]     Ответить | Цитировать Сообщить модератору
 Re: значения строк ключевого столбца  [new]
insomniahhhhh
Member

Откуда:
Сообщений: 116
Glory
qwerty112
в одну - вводить, во второй - изменять, а из 3-ей - делать выборки ! :)

Из 4ой - удалять )


хахахахаха.
15 янв 13, 17:13    [13773648]     Ответить | Цитировать Сообщить модератору
 Re: значения строк ключевого столбца  [new]
insomniahhhhh
Member

Откуда:
Сообщений: 116
Гость333
insomniahhhhh
нужны 2 таблицы. в одну будут вводиться и храниться данные, в другой теже данные будут изменяться

Вводите, храните и изменяйте данные в одной таблице. Вторая не нужна.


да хранить и изменять можно в одной. только мне нужно 2 и в 1 ой будут вводиться храниться и изменяться и во 2ой чтобы хранились и изменялись те же самые данные. для этого их нужно связать.
15 янв 13, 17:16    [13773669]     Ответить | Цитировать Сообщить модератору
 Re: значения строк ключевого столбца  [new]
Glory
Member

Откуда:
Сообщений: 104751
insomniahhhhh
для этого их нужно связать.

Для этого их не нужно связывать.
Для этого нужно написать триггера. Которые будут распространять изменения от одной таблицы к другой и наоборот.
15 янв 13, 17:19    [13773696]     Ответить | Цитировать Сообщить модератору
 Re: значения строк ключевого столбца  [new]
Гость333
Member

Откуда:
Сообщений: 3683
insomniahhhhh
да хранить и изменять можно в одной. только мне нужно 2 и в 1 ой будут вводиться храниться и изменяться и во 2ой чтобы хранились и изменялись те же самые данные. для этого их нужно связать.

Опять же возвращаемся к тому, чтобы описать задачу русским языком в терминах бизнес-логики. Есть серьёзные подозрения, что не нужны ни две таблицы, ни связь между ними, ни триггер для распространения изменений.
15 янв 13, 17:25    [13773766]     Ответить | Цитировать Сообщить модератору
 Re: значения строк ключевого столбца  [new]
insomniahhhhh
Member

Откуда:
Сообщений: 116
Glory
insomniahhhhh
для этого их нужно связать.

Для этого их не нужно связывать.
Для этого нужно написать триггера. Которые будут распространять изменения от одной таблицы к другой и наоборот.


еще нужно в обе добавить n-число строк в 3 столбца. я не знаю как написать триггеры, я только представляю что нужно использовать
select чтобы из 1 таблицы все оказаллось тоже самое во 2-ой
15 янв 13, 17:26    [13773774]     Ответить | Цитировать Сообщить модератору
 Re: значения строк ключевого столбца  [new]
Glory
Member

Откуда:
Сообщений: 104751
insomniahhhhh
я не знаю как написать триггеры

Ну так начинайте уже узнавать
15 янв 13, 17:26    [13773786]     Ответить | Цитировать Сообщить модератору
 Re: значения строк ключевого столбца  [new]
insomniahhhhh
Member

Откуда:
Сообщений: 116
Гость333
insomniahhhhh
да хранить и изменять можно в одной. только мне нужно 2 и в 1 ой будут вводиться храниться и изменяться и во 2ой чтобы хранились и изменялись те же самые данные. для этого их нужно связать.

Опять же возвращаемся к тому, чтобы описать задачу русским языком в терминах бизнес-логики. Есть серьёзные подозрения, что не нужны ни две таблицы, ни связь между ними, ни триггер для распространения изменений.


причем здесь бизнес логика? здесь форум про использование transact-sql языка, а не про бизнес термины.
я не спрашиваю зачем мне эти таблицы, а как реализовать создание изменение этих таблиц.

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

так стало понятнее?
15 янв 13, 17:42    [13773896]     Ответить | Цитировать Сообщить модератору
 Re: значения строк ключевого столбца  [new]
londinium
Member

Откуда: Киев
Сообщений: 1198
автор
но мне кажется что здесь никто это не умеет делать,

Я бы не делал таких заявлений.

Скажите, пожалуйста, если в Вашу таблицу обратятся два разных Пупкин И.И, то как планируете разруливать?
15 янв 13, 17:59    [13774068]     Ответить | Цитировать Сообщить модератору
 Re: значения строк ключевого столбца  [new]
insomniahhhhh
Member

Откуда:
Сообщений: 116
londinium
автор
но мне кажется что здесь никто это не умеет делать,

Я бы не делал таких заявлений.

Скажите, пожалуйста, если в Вашу таблицу обратятся два разных Пупкин И.И, то как планируете разруливать?


буду ставить цифорки в столбец m_id 1,2,3 и тп
15 янв 13, 21:33    [13774912]     Ответить | Цитировать Сообщить модератору
 Re: значения строк ключевого столбца  [new]
Гость333
Member

Откуда:
Сообщений: 3683
insomniahhhhh
задача упрощена до примитива.
убогий неправильный пример этих таблиц здесь выложен.

Во! Дайте тогда нормальный правильный пример таблиц, со всеми столбцами и индексами. Зачем мучить то убогое, что даже выполниться без ошибок не может? :-)

insomniahhhhh
так стало понятнее?

Нисколько. То, что вы описали, я понял уже давно. Дело в том, что у вашей исходной задачи (которую вы тщательно скрываете) есть правильные и неправильные способы решения. Пока всё указывает на то, что вы избрали неправильный способ. Вам уже все об этом намекают. Скорее всего, правильный способ описан здесь: 13772141. Когда вы озвучите исходную задачу, можно будет уже с уверенностью сказать, подойдёт это вам или нет.
16 янв 13, 09:49    [13776132]     Ответить | Цитировать Сообщить модератору
 Re: значения строк ключевого столбца  [new]
insomniahhhhh
Member

Откуда:
Сообщений: 116
Гость333
insomniahhhhh
задача упрощена до примитива.
убогий неправильный пример этих таблиц здесь выложен.

Во! Дайте тогда нормальный правильный пример таблиц, со всеми столбцами и индексами. Зачем мучить то убогое, что даже выполниться без ошибок не может? :-)

insomniahhhhh
так стало понятнее?

Нисколько. То, что вы описали, я понял уже давно. Дело в том, что у вашей исходной задачи (которую вы тщательно скрываете) есть правильные и неправильные способы решения. Пока всё указывает на то, что вы избрали неправильный способ. Вам уже все об этом намекают. Скорее всего, правильный способ описан здесь: 13772141. Когда вы озвучите исходную задачу, можно будет уже с уверенностью сказать, подойдёт это вам или нет.


ну так если вы не понимаете,тогда не мешайте тем кто понимает.
займитесь теми задачами которые вам понятны
16 янв 13, 12:53    [13777398]     Ответить | Цитировать Сообщить модератору
 Re: значения строк ключевого столбца  [new]
Glory
Member

Откуда:
Сообщений: 104751
insomniahhhhh
ну так если вы не понимаете,тогда не мешайте тем кто понимает.
займитесь теми задачами которые вам понятны

А вы займитесь уже изучением синтаксиса
А то у вас на каждое предложение один ответ - а как это написать.
16 янв 13, 12:56    [13777425]     Ответить | Цитировать Сообщить модератору
 Re: значения строк ключевого столбца  [new]
insomniahhhhh
Member

Откуда:
Сообщений: 116
m_id Ф.И.О. наследодателя UniqueValue UniqueKey дата смерти паспортные данные
1 NULL 10 10 NULL NULL

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

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

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

вот что получилось, но с ошибками. 1ые 2 таблицы - с ними все нормально. а 2 другие которые ФИО наследодателя - с ними что то не так. я хотела чтобы ФИО наследодателя, дате смерти и паспортным данным из m-id и n_id таблиц присваивались неизвестные
значения default values. в итоге добавились 2 другие таблицы. в 1ой 2 строки, в другой 4 строки.
и нужно чтобы при вводе данных ФИО наследодателя, дате смерти и паспортным данным в m_id те же данные появлялись в n_id.

и еще Uniquekey и uniquevalue в 1 таблице должны быть равны 10?

(строк обработано: 1)

(строк обработано: 1)

(строк обработано: 1)

(строк обработано: 1)

(строк обработано: 1)

(строк обработано: 1)
Сообщение 2627, уровень 14, состояние 1, строка 5
Нарушение "UQ__Table_1__2DE46E933B2BBE9D" ограничения UNIQUE KEY. Невозможно вставить повторяющийся ключ в объект "dbo.Table_1".
Выполнение данной инструкции было прервано.
Сообщение 2627, уровень 14, состояние 1, строка 7
Нарушение "UQ__Table_1__2DE46E933B2BBE9D" ограничения UNIQUE KEY. Невозможно вставить повторяющийся ключ в объект "dbo.Table_1".
Выполнение данной инструкции было прервано.

(строк обработано: 2)

(строк обработано: 1)

(строк обработано: 1)

(строк обработано: 1)

(строк обработано: 4)


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;
insert into [dbo].[Table_1] ([дата смерти])
default values;
insert into [dbo].[Table_1] ([паспортные данные])
default values;
go

SELECT [Ф.И.О. наследодателя],[дата смерти],[паспортные данные]
FROM [dbo].[Table_1];
go

insert into [dbo].[инф-ция о наследодателе_1] ([Ф.И.О. наследодателя])
default values;
insert into [dbo].[инф-ция о наследодателе_1] ([дата смерти])
default values;
insert into [dbo].[инф-ция о наследодателе_1] ([паспортные данные])
default values;
go

SELECT [Ф.И.О. наследодателя],[дата смерти],[паспортные данные]
FROM [dbo].[инф-ция о наследодателе_1];
go

drop table [dbo].[инф-ция о наследодателе_1], [dbo].[Table_1];
go
17 янв 13, 13:06    [13784390]     Ответить | Цитировать Сообщить модератору
 Re: значения строк ключевого столбца  [new]
invm
Member

Откуда: Москва
Сообщений: 9785
insomniahhhhh
insert into [dbo].[Table_1] ([Ф.И.О. наследодателя])
default values;
insert into [dbo].[Table_1] ([дата смерти])
default values;
insert into [dbo].[Table_1] ([паспортные данные])
default values;
Данные в таблицы заносятся построчно, а не постолбцово.
Наймите уже специалиста для проектирования и реализации БД.
17 янв 13, 13:36    [13784694]     Ответить | Цитировать Сообщить модератору
 Re: значения строк ключевого столбца  [new]
insomniahhhhh
Member

Откуда:
Сообщений: 116
invm
insomniahhhhh
insert into [dbo].[Table_1] ([Ф.И.О. наследодателя])
default values;
insert into [dbo].[Table_1] ([дата смерти])
default values;
insert into [dbo].[Table_1] ([паспортные данные])
default values;
Данные в таблицы заносятся построчно, а не постолбцово.
Наймите уже специалиста для проектирования и реализации БД.


а здесь написано что можно как указывать столбцы так и не указывать
http://msdn.microsoft.com/ru-ru/library/dd776381(v=sql.100).aspx

USE AdventureWorks;
GO
IF OBJECT_ID ('dbo.T1', 'U') IS NOT NULL
DROP TABLE dbo.T1;
GO
CREATE TABLE dbo.T1
(
column_1 int IDENTITY,
column_2 varchar(30)
CONSTRAINT default_name DEFAULT ('my column default'),
column_3 timestamp,
column_4 varchar(40) NULL
);
GO
INSERT INTO dbo.T1 (column_4)
VALUES ('Explicit value');
INSERT INTO dbo.T1 (column_2, column_4)
VALUES ('Explicit value', 'Explicit value');
INSERT INTO dbo.T1 (column_2)
VALUES ('Explicit value');
INSERT INTO T1 DEFAULT VALUES;
GO
SELECT column_1, column_2, column_3, column_4
FROM dbo.T1;
GO
22 янв 13, 15:20    [13810036]     Ответить | Цитировать Сообщить модератору
 Re: значения строк ключевого столбца  [new]
Glory
Member

Откуда:
Сообщений: 104751
insomniahhhhh
а здесь написано что можно как указывать столбцы так и не указывать

А где здесь написано про число записей, которое добавит одно команда INSERT ... VALUES ?

Сообщение было отредактировано: 22 янв 13, 15:22
22 янв 13, 15:22    [13810064]     Ответить | Цитировать Сообщить модератору
 Re: значения строк ключевого столбца  [new]
iap
Member

Откуда: Москва
Сообщений: 47107
insomniahhhhh
invm
пропущено...
Данные в таблицы заносятся построчно, а не постолбцово.
Наймите уже специалиста для проектирования и реализации БД.


а здесь написано что можно как указывать столбцы так и не указывать
http://msdn.microsoft.com/ru-ru/library/dd776381(v=sql.100).aspx

USE AdventureWorks;
GO
IF OBJECT_ID ('dbo.T1', 'U') IS NOT NULL
DROP TABLE dbo.T1;
GO
CREATE TABLE dbo.T1
(
column_1 int IDENTITY,
column_2 varchar(30)
CONSTRAINT default_name DEFAULT ('my column default'),
column_3 timestamp,
column_4 varchar(40) NULL
);
GO
INSERT INTO dbo.T1 (column_4)
VALUES ('Explicit value');
INSERT INTO dbo.T1 (column_2, column_4)
VALUES ('Explicit value', 'Explicit value');
INSERT INTO dbo.T1 (column_2)
VALUES ('Explicit value');
INSERT INTO T1 DEFAULT VALUES;
GO
SELECT column_1, column_2, column_3, column_4
FROM dbo.T1;
GO
Каждый INSERT ... VALUES() вставил по одной строке.
С заданными значениями в указанных в INSERTе столбцах и со значениями по-умолчанию в остальных.
Это так надо было, да? Или предполагалось, что последовательно вставятся колонки в одну и ту же строку?
22 янв 13, 16:05    [13810487]     Ответить | Цитировать Сообщить модератору
 Re: значения строк ключевого столбца  [new]
insomniahhhhh
Member

Откуда:
Сообщений: 116
а так правильно?

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
22 янв 13, 16:05    [13810495]     Ответить | Цитировать Сообщить модератору
 Re: значения строк ключевого столбца  [new]
Glory
Member

Откуда:
Сообщений: 104751
insomniahhhhh
а так правильно?

Если результат вас удовлетворяет, то правильно.
22 янв 13, 16:10    [13810535]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить