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

Откуда:
Сообщений: 116
ничего не мешает, только в примере почему то такого св-ва нет
11 янв 13, 21:27    [13756904]     Ответить | Цитировать Сообщить модератору
 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](
[Ф.И.О. наследодателя]_id [char](50) NOT NULL identity primary key,
UniqueValue [char](50) null,
UniqueKey as isnull(UniqueValue, -[Ф.И.О. наследодателя]_id) persisted,
check (UniqueValue >= 0),
unique (UniqueKey),
[дата смерти] [date] NULL,
[паспортные данные] [char](50) NULL);
GO

create table [dbo].[инф-ция о наследодателе_1]
( [Ф.И.О. наследодателя]_id [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

declare @t table ([Ф.И.О. наследодателя]_id [char](50), UniqueKey [char](50));

insert into [dbo].[Table_1]
output
inserted.[Ф.И.О. наследодателя]_id, inserted.UniqueKey into @t ([Ф.И.О. наследодателя]_id, UniqueKey)
default values;

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

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

update [Ф.И.О. наследодателя]
set
UniqueValue = 10
from
@t t join
[dbo].[Table_1] [Ф.И.О. наследодателя] on [Ф.И.О. наследодателя].[Ф.И.О. наследодателя]_id = t.[Ф.И.О. наследодателя]_id;

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

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


а как проверить работает или нет? через "выполнить" выдает ошибки запроса.
12 янв 13, 19:45    [13760146]     Ответить | Цитировать Сообщить модератору
 Re: значения строк ключевого столбца  [new]
Гость333
Member

Откуда:
Сообщений: 3683
insomniahhhhh
а как проверить работает или нет? через "выполнить" выдает ошибки запроса.

Ну раз выдаёт ошибки, значит, не работает? Или тут может быть другое мнение?

insomniahhhhh
[Ф.И.О. наследодателя]_id

SQL Server воспринимает это как два отдельных слова: [Ф.И.О. наследодателя] и _id.
См. правила написания идентификаторов: http://msdn.microsoft.com/ru-ru/library/ms175874(v=sql.100).aspx

insomniahhhhh
[char](50) NOT NULL identity

Столбец типа char не может иметь свойство identity.
http://msdn.microsoft.com/ru-ru/library/ms191131(v=sql.100).aspx
таблица может содержать только один столбец со свойством IDENTITY, причем такой столбец должен иметь тип данных decimal, int, numeric, smallint, bigint или tinyint;


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

Откуда:
Сообщений: 116
Гость333
insomniahhhhh
а как проверить работает или нет? через "выполнить" выдает ошибки запроса.

Ну раз выдаёт ошибки, значит, не работает? Или тут может быть другое мнение?

insomniahhhhh
[Ф.И.О. наследодателя]_id

SQL Server воспринимает это как два отдельных слова: [Ф.И.О. наследодателя] и _id.
См. правила написания идентификаторов: http://msdn.microsoft.com/ru-ru/library/ms175874(v=sql.100).aspx
но в квадратных скобках имя столбца это согласно правилам. ????

insomniahhhhh
[char](50) NOT NULL identity

Столбец типа char не может иметь свойство identity.
http://msdn.microsoft.com/ru-ru/library/ms191131(v=sql.100).aspx
таблица может содержать только один столбец со свойством IDENTITY, причем такой столбец должен иметь тип данных decimal, int, numeric, smallint, bigint или tinyint;

а у меня должен оставаться тип char потому что строка должна состоять из символов.



Дальше не смотрел.
13 янв 13, 13:17    [13761966]     Ответить | Цитировать Сообщить модератору
 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](
[Ф.И.О. наследодателя] [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

declare @t table ([Ф.И.О. наследодателя] [char](50), UniqueKey [char](50));

insert into [dbo].[Table_1]
output
inserted.[Ф.И.О. наследодателя], inserted.UniqueKey into @t ([Ф.И.О. наследодателя], UniqueKey)
default values;

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

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

update [Ф.И.О. наследодателя]
set
UniqueValue = 10
from
@t t join
[dbo].[Table_1] [Ф.И.О. наследодателя] on [Ф.И.О. наследодателя].[Ф.И.О. наследодателя] = t.[Ф.И.О. наследодателя];

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

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

я убрала везде Id, но все равно по поводу типа значений char выдает ошибки. какое тогда св-во для char нужно присвоить??

Сообщение 2749, уровень 16, состояние 2, строка 3
Столбец идентификаторов "Ф.И.О. наследодателя" должен принадлежать данным типа int, bigint, smallint, tinyint, decimal или numeric с масштабом 0, а также не должен допускать значения NULL.
Сообщение 2749, уровень 16, состояние 2, строка 3
Столбец идентификаторов "Ф.И.О. наследодателя" должен принадлежать данным типа int, bigint, smallint, tinyint, decimal или numeric с масштабом 0, а также не должен допускать значения NULL.
Сообщение 208, уровень 16, состояние 1, строка 5
Недопустимое имя объекта "dbo.Table_1".
Сообщение 3701, уровень 11, состояние 5, строка 3
Не удалось удалить таблица "dbo.инф-ция о наследодателе_1", так как он не существует или отсутствуют разрешения.
Сообщение 3701, уровень 11, состояние 5, строка 3
Не удалось удалить таблица "dbo.Table_1", так как он не существует или отсутствуют разрешения.

и еще он почему то не принимает названия таблиц dbo.Table_1 и dbo.инф-ция о наследодателе_1. хотя эти название выдала сама программа когда я создала этот запрос. и он не хочет выполнять вот это действие:
drop table [dbo].[инф-ция о наследодателе_1], [dbo].[Table_1];
go
13 янв 13, 13:30    [13761997]     Ответить | Цитировать Сообщить модератору
 Re: значения строк ключевого столбца  [new]
Гость333
Member

Откуда:
Сообщений: 3683
insomniahhhhh
я убрала везде Id, но все равно по поводу типа значений char выдает ошибки. какое тогда св-во для char нужно присвоить??

Не нужно никакое свойство этому столбцу присваивать. Нужно добавить в таблицу новое поле, как вам и советовали:
kain111
почитайте про identity. Добавьте такое поле к вашей таблице

То есть в вашей Table_1 должно появиться что-то вроде столбца id:
id int identity primary key


insomniahhhhh
он не хочет выполнять вот это действие:
drop table [dbo].[инф-ция о наследодателе_1], [dbo].[Table_1];
go

Ну так сервер вам сообщает о причине (хотя и несколько корявым русским языком):
сервер
Не удалось удалить таблица ..., так как он не существует

Раз в скриптах CREATE TABLE содержается ошибки, то и таблицы не создались. Соответственно, и удалять нечего. Как только CREATE TABLE у вас заработает без ошибок, DROP TABLE тоже выполнится без ошибок.
13 янв 13, 13:45    [13762021]     Ответить | Цитировать Сообщить модератору
 Re: значения строк ключевого столбца  [new]
insomniahhhhh
Member

Откуда:
Сообщений: 116
Гость333
insomniahhhhh
я убрала везде Id, но все равно по поводу типа значений char выдает ошибки. какое тогда св-во для char нужно присвоить??

Не нужно никакое свойство этому столбцу присваивать. Нужно добавить в таблицу новое поле, как вам и советовали:
kain111
почитайте про identity. Добавьте такое поле к вашей таблице

То есть в вашей Table_1 должно появиться что-то вроде столбца id:
id int identity primary key

вы вначале бы посмотрели как у меня появился столбец в 1ой таблице, а именно в точности так как мне советовали.
я не могу сделать тип значений integer при создании поля, так как тип значений строки у меня символьный то есть char.


insomniahhhhh
он не хочет выполнять вот это действие:
drop table [dbo].[инф-ция о наследодателе_1], [dbo].[Table_1];
go

Ну так сервер вам сообщает о причине (хотя и несколько корявым русским языком):
сервер
Не удалось удалить таблица ..., так как он не существует

Раз в скриптах CREATE TABLE содержается ошибки, то и таблицы не создались. Соответственно, и удалять нечего. Как только CREATE TABLE у вас заработает без ошибок, DROP TABLE тоже выполнится без ошибок.


это я сама понимаю. только как в create table в названии таблицы и столбцов могут быть ошибки если программа при создании запроса сама автоматич. присвоила эти названия.
13 янв 13, 14:27    [13762096]     Ответить | Цитировать Сообщить модератору
 Re: значения строк ключевого столбца  [new]
Гость333
Member

Откуда:
Сообщений: 3683
insomniahhhhh
вы вначале бы посмотрели как у меня появился столбец в 1ой таблице, а именно в точности так как мне советовали.

Вот тут советовали? 13721072
Так там тип данных int, а не char:
m_id int not null identity primary key

Так что не в точности, а неким вольным образом.

insomniahhhhh
я не могу сделать тип значений integer при создании поля, так как тип значений строки у меня символьный то есть char.

Никто и не предлагает сделать тип поля [Ф.И.О. наследодателя] — integer. Пускай остаётся char. Добавьте в таблицу отдельный столбец "id int identity primary key". То есть в Table_1 будут такие столбцы:
Столбец Тип
id int
[Ф.И.О. наследодателя] [char](50)
UniqueValue int
UniqueKey int
[дата смерти] [date]
[паспортные данные] [char](50)


insomniahhhhh
только как в create table в названии таблицы и столбцов могут быть ошибки если программа при создании запроса сама автоматич. присвоила эти названия.

Ошибки могут быть не только в названии таблицы и столбцов. Вы же сами, вручную, вписали свойство identity для char-поля, тем самым сделав автоматически созданный скрипт ошибочным. Если в CREATE TABLE есть хоть одна ошибка, таблица не создастся, будь имена таблицы и столбцов хоть трижды правильными.
13 янв 13, 16:37    [13762406]     Ответить | Цитировать Сообщить модератору
 Re: значения строк ключевого столбца  [new]
insomniahhhhh
Member

Откуда:
Сообщений: 116
Гость333
insomniahhhhh
вы вначале бы посмотрели как у меня появился столбец в 1ой таблице, а именно в точности так как мне советовали.

Вот тут советовали? 13721072
Так там тип данных int, а не char:
m_id int not null identity primary key

Так что не в точности, а неким вольным образом.

insomniahhhhh
я не могу сделать тип значений integer при создании поля, так как тип значений строки у меня символьный то есть char.

Никто и не предлагает сделать тип поля [Ф.И.О. наследодателя] — integer. Пускай остаётся char. Добавьте в таблицу отдельный столбец "id int identity primary key". То есть в Table_1 будут такие столбцы:
Столбец Тип
id int
[Ф.И.О. наследодателя] [char](50)
UniqueValue int
UniqueKey int
[дата смерти] [date]
[паспортные данные] [char](50)


а столбцы UniqueValue, int
UniqueKey, int относятся к id? и id нужно будет присвоить имя m_id например. не бывает столбца id или нет?

насколько я понимаю следующей операцией к столбцу [Ф.И.О. наследодателя] добавляется n-строк:
insert into [dbo].[Table_1]
output
inserted.[Ф.И.О. наследодателя], inserted.UniqueKey into @t ([Ф.И.О. наследодателя], UniqueKey)
default values;

если [Ф.И.О. наследодателя] заменить на id, произойдет тоже самое.
а в остальные столбцы добавлять строки обычным способом с пом. insert и без доп. таблицы @t и без использования св-ва identity?
я имею ввиду
[Ф.И.О. наследодателя], [char](50)
[дата смерти], [date]
и [паспортные данные], [char](50)


insomniahhhhh
только как в create table в названии таблицы и столбцов могут быть ошибки если программа при создании запроса сама автоматич. присвоила эти названия.

Ошибки могут быть не только в названии таблицы и столбцов. Вы же сами, вручную, вписали свойство identity для char-поля, тем самым сделав автоматически созданный скрипт ошибочным. Если в CREATE TABLE есть хоть одна ошибка, таблица не создастся, будь имена таблицы и столбцов хоть трижды правильными.
14 янв 13, 01:12    [13764073]     Ответить | Цитировать Сообщить модератору
 Re: значения строк ключевого столбца  [new]
Гость333
Member

Откуда:
Сообщений: 3683
insomniahhhhh
а столбцы UniqueValue, int
UniqueKey, int относятся к id?

Да.

insomniahhhhh
и id нужно будет присвоить имя m_id например. не бывает столбца id или нет?

Бывает, и очень часто. Но можете назвать m_id или как больше понравится, ничто этому не препятствует.

insomniahhhhh
насколько я понимаю следующей операцией к столбцу [Ф.И.О. наследодателя] добавляется n-строк:
insert into [dbo].[Table_1]
output
inserted.[Ф.И.О. наследодателя], inserted.UniqueKey into @t ([Ф.И.О. наследодателя], UniqueKey)
default values;

Этой конструкцией добавляется ровно одна строка. И не к столбцу ("к столбцу добавляются строки" — это бессмыслица), а в таблицу.
У вас, кстати, ничего не добавится. Вы здесь как минимум должны указать [Ф.И.О. наследодателя], поскольку это поле у вас — NOT NULL и не имеет значения по умолчанию.
14 янв 13, 13:03    [13766083]     Ответить | Цитировать Сообщить модератору
 Re: значения строк ключевого столбца  [new]
insomniahhhhh
Member

Откуда:
Сообщений: 116
Гость333
insomniahhhhh
а столбцы UniqueValue, int
UniqueKey, int относятся к id?

Да.

insomniahhhhh
и id нужно будет присвоить имя m_id например. не бывает столбца id или нет?

Бывает, и очень часто. Но можете назвать m_id или как больше понравится, ничто этому не препятствует.

insomniahhhhh
насколько я понимаю следующей операцией к столбцу [Ф.И.О. наследодателя] добавляется n-строк:
insert into [dbo].[Table_1]
output
inserted.[Ф.И.О. наследодателя], inserted.UniqueKey into @t ([Ф.И.О. наследодателя], UniqueKey)
default values;

Этой конструкцией добавляется ровно одна строка. И не к столбцу ("к столбцу добавляются строки" — это бессмыслица), а в таблицу.
У вас, кстати, ничего не добавится. Вы здесь как минимум должны указать [Ф.И.О. наследодателя], поскольку это поле у вас — NOT NULL и не имеет значения по умолчанию.


да, но после inserted указывается столбец [Ф.И.О. наследодателя] и к table_1 добавлен [Ф.И.О. наследодателя]:

insert into [dbo].[Table_1].[Ф.И.О. наследодателя]
output
inserted.[Ф.И.О. наследодателя], inserted.UniqueKey into @t ([Ф.И.О. наследодателя], UniqueKey)
default values;

как мне сделать чтоб n-строк добавлялось в [Ф.И.О. наследодателя],[дата смерти],
[паспортные данные]? тут ведь уже не надо использовать св-во identity

Столбец Тип
id int
[Ф.И.О. наследодателя] [char](50)
UniqueValue int
UniqueKey int
[дата смерти] [date]
[паспортные данные] [char](50)
14 янв 13, 14:40    [13767005]     Ответить | Цитировать Сообщить модератору
 Re: значения строк ключевого столбца  [new]
Гость333
Member

Откуда:
Сообщений: 3683
insomniahhhhh
insert into [dbo].[Table_1].[Ф.И.О. наследодателя]
output
inserted.[Ф.И.О. наследодателя], inserted.UniqueKey into @t ([Ф.И.О. наследодателя], UniqueKey)
default values;


Тут вы пытаетесь вставить данные в таблицу [Ф.И.О. наследодателя], находящуюся в схеме [Table_1] базы данных [dbo]. А у вас [Ф.И.О. наследодателя] — столбец, [Table_1] — таблица, а [dbo] — схема.

Правила именования объектов описаны здесь: http://msdn.microsoft.com/ru-ru/library/ms187879(v=sql.100).aspx
Синтаксис INSERT описан здесь: http://msdn.microsoft.com/ru-ru/library/ms174335(v=sql.100).aspx
Примеры использования INSERT описаны здесь: http://msdn.microsoft.com/ru-ru/library/dd776381(v=sql.100).aspx
14 янв 13, 15:51    [13767662]     Ответить | Цитировать Сообщить модератору
 Re: значения строк ключевого столбца  [new]
insomniahhhhh
Member

Откуда:
Сообщений: 116
Гость333
insomniahhhhh
insert into [dbo].[Table_1].[Ф.И.О. наследодателя]
output
inserted.[Ф.И.О. наследодателя], inserted.UniqueKey into @t ([Ф.И.О. наследодателя], UniqueKey)
default values;


Тут вы пытаетесь вставить данные в таблицу [Ф.И.О. наследодателя], находящуюся в схеме [Table_1] базы данных [dbo]. А у вас [Ф.И.О. наследодателя] — столбец, [Table_1] — таблица, а [dbo] — схема.

Правила именования объектов описаны здесь: http://msdn.microsoft.com/ru-ru/library/ms187879(v=sql.100).aspx
Синтаксис INSERT описан здесь: http://msdn.microsoft.com/ru-ru/library/ms174335(v=sql.100).aspx
Примеры использования INSERT описаны здесь: http://msdn.microsoft.com/ru-ru/library/dd776381(v=sql.100).aspx


нет. [dbo].[Table_1] -это название таблицы. спасибо конечно за ссылки, я и сама их читала.
и послать я тоже так могу отправить ссылки. мне необходимо пример этот доделать
14 янв 13, 16:09    [13767775]     Ответить | Цитировать Сообщить модератору
 Re: значения строк ключевого столбца  [new]
iap
Member

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


Тут вы пытаетесь вставить данные в таблицу [Ф.И.О. наследодателя], находящуюся в схеме [Table_1] базы данных [dbo]. А у вас [Ф.И.О. наследодателя] — столбец, [Table_1] — таблица, а [dbo] — схема.

Правила именования объектов описаны здесь: http://msdn.microsoft.com/ru-ru/library/ms187879(v=sql.100).aspx
Синтаксис INSERT описан здесь: http://msdn.microsoft.com/ru-ru/library/ms174335(v=sql.100).aspx
Примеры использования INSERT описаны здесь: http://msdn.microsoft.com/ru-ru/library/dd776381(v=sql.100).aspx


нет. [dbo].[Table_1] -это название таблицы. спасибо конечно за ссылки, я и сама их читала.
и послать я тоже так могу отправить ссылки. мне необходимо пример этот доделать
А [Ф.И.О. наследодателя] - это что?
14 янв 13, 16:14    [13767819]     Ответить | Цитировать Сообщить модератору
 Re: значения строк ключевого столбца  [new]
Гость333
Member

Откуда:
Сообщений: 3683
insomniahhhhh
спасибо конечно за ссылки, я и сама их читала

Тогда вы должны знать, что имена столбцов в инструкции INSERT пишутся после имени таблицы в скобках, а не через точку.
То есть не так:
insert into [dbo].[Table_1].[Ф.И.О. наследодателя]

а так:
insert into [dbo].[Table_1] ([Ф.И.О. наследодателя])
14 янв 13, 16:22    [13767876]     Ответить | Цитировать Сообщить модератору
 Re: значения строк ключевого столбца  [new]
insomniahhhhh
Member

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


нет. [dbo].[Table_1] -это название таблицы. спасибо конечно за ссылки, я и сама их читала.
и послать я тоже так могу отправить ссылки. мне необходимо пример этот доделать
А [Ф.И.О. наследодателя] - это что?


это один из столбцов
Столбец Тип
id int
[Ф.И.О. наследодателя] [char](50)
UniqueValue int
UniqueKey int
[дата смерти] [date]
[паспортные данные] [char](50)
14 янв 13, 18:18    [13768675]     Ответить | Цитировать Сообщить модератору
 Re: значения строк ключевого столбца  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
insomniahhhhh
iap
пропущено...
А [Ф.И.О. наследодателя] - это что?


это один из столбцов
Столбец Тип
id int
[Ф.И.О. наследодателя] [char](50)
UniqueValue int
UniqueKey int
[дата смерти] [date]
[паспортные данные] [char](50)
А пишете этот столбец на месте таблицы. Нехорошо
14 янв 13, 21:47    [13769387]     Ответить | Цитировать Сообщить модератору
 Re: значения строк ключевого столбца  [new]
insomniahhhhh
Member

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


это один из столбцов
Столбец Тип
id int
[Ф.И.О. наследодателя] [char](50)
UniqueValue int
UniqueKey int
[дата смерти] [date]
[паспортные данные] [char](50)
А пишете этот столбец на месте таблицы. Нехорошо


нехорошо , что вы не обратили внимание что об этом писал гость333

Гость333
Member

Откуда:
Сообщений: 449
insomniahhhhh
insert into [dbo].[Table_1].[Ф.И.О. наследодателя]
output
inserted.[Ф.И.О. наследодателя], inserted.UniqueKey into @t ([Ф.И.О. наследодателя], UniqueKey)
default values;


Тут вы пытаетесь вставить данные в таблицу [Ф.И.О. наследодателя], находящуюся в схеме [Table_1] базы данных [dbo]. А у вас [Ф.И.О. наследодателя] — столбец, [Table_1] — таблица, а [dbo] — схема.

Правила именования объектов описаны здесь: http://msdn.microsoft.com/ru-ru/library/ms187879(v=sql.100).aspx
Синтаксис INSERT описан здесь: http://msdn.microsoft.com/ru-ru/library/ms174335(v=sql.100).aspx
Примеры использования INSERT описаны здесь: http://msdn.microsoft.com/ru-ru/library/dd776381(v=sql.100).aspx
14 янв 13, 22:37    [13769499]     Ответить | Цитировать Сообщить модератору
 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 ([Ф.И.О. наследодателя] [char](50), UniqueKey int);

insert into [dbo].[Table_1]
output
inserted.[Ф.И.О. наследодателя], inserted.UniqueKey into @t ([Ф.И.О. наследодателя], UniqueKey)
default values;

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

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

update [Ф.И.О. наследодателя]
set
UniqueValue = 10
from
@t t join
[dbo].[Table_1] [Ф.И.О. наследодателя] on [Ф.И.О. наследодателя].[Ф.И.О. наследодателя] = t.[Ф.И.О. наследодателя];

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

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

у меня получились 4 таблицы вместо 2-х. все столбцы кроме ключевых m_id и n_id имеют значения null. а эти 2 значение 1.
так если остальные столбцы имеют значения null, я могу вводить в каждую строку символьные данные или только 0?
14 янв 13, 23:55    [13769691]     Ответить | Цитировать Сообщить модератору
 Re: значения строк ключевого столбца  [new]
invm
Member

Откуда: Москва
Сообщений: 9833
insomniahhhhh,

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

Откуда:
Сообщений: 116
[quot invm]insomniahhhhh,
Я вам привел абстрактный пример. Не нужно его с таким упорством пытаться допилить под свои нужды, особенно не разобравшись как он работает.
Вы чего пытаетесь добиться? Возможности использовать [Ф.И.О. наследодателя] в качестве ключа, что бы ссылаться на него в других таблицах? Ну так для начала задумайтесь, что произойдет, если в вашу нотариальную контору обратятся оформлять завещание двое или более полных тезок...


ну почему, хороший пример.
существуют 2 таблицы [dbo].[Table_1] и [dbo].[инф-ция о наследодателе_1]. Они обе содержат одинаковые столбцы [Ф.И.О. наследодателя], [дата смерти], [паспортные данные]. отличаются они разными ключевыми столбцами: m_id и n_id. И нужно связать эти таблицы столбцами [Ф.И.О. наследодателя] [дата смерти] [паспортные данные], потому что при вводе ФИО даты смерти и паспортных данных, они должно появляться сразу в этих двух таблицах.
Во-первых мне нужно в 3 столбца обеих таблиц добавить n-строк. во-вторых связать столбцы [Ф.И.О. наследодателя] [дата смерти] [паспортные данные] одной таблицы с таким же столбцами [Ф.И.О. наследодателя] [дата смерти] [паспортные данные] 2-ой таблицы.

1-ая таблица [dbo].[Table_1]:

Столбец Тип
m_id int
[Ф.И.О. наследодателя] [char](50)
UniqueValue int
UniqueKey int
[дата смерти] [date]
[паспортные данные] [char](50)

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

Столбец Тип
n_id int
[Ф.И.О. наследодателя] [char](50)
UniqueKey int
[дата смерти] [date]
[паспортные данные] [char](50)

сейчас у меня генерируются 4 таблицы, по 2 одинаковых. каждый столбец с одной строкой со значением NULL. кроме столбцов m_id и n_id, кот. имеют значения 1. мне непонятно если вводить в [Ф.И.О. наследодателя] [дата смерти] [паспортные данные] символьные данные и дату соответственно они будут вводиться или можно вводить только 0?
15 янв 13, 13:50    [13772005]     Ответить | Цитировать Сообщить модератору
 Re: значения строк ключевого столбца  [new]
Гость333
Member

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

Это называется "ненормализованная структура БД". Перечисленные данные должны храниться только в одной таблице, а в другой должен быть foreign key, ссылающийся на ключ первой таблицы.
15 янв 13, 14:04    [13772131]     Ответить | Цитировать Сообщить модератору
 Re: значения строк ключевого столбца  [new]
invm
Member

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

Вам нужно сделать одну таблицу "Справочник наследодателей"
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_наследодателя),
 ...
);
15 янв 13, 14:05    [13772141]     Ответить | Цитировать Сообщить модератору
 Re: значения строк ключевого столбца  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Гость333
существуют 2 таблицы ... обе содержат одинаковые столбцы [Ф.И.О. наследодателя], [дата смерти], [паспортные данные]

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

Откуда:
Сообщений: 116
Гость333
Гость333
существуют 2 таблицы ... обе содержат одинаковые столбцы [Ф.И.О. наследодателя], [дата смерти], [паспортные данные]

Опишите, кстати, что хранится в этих двух таблицах. И чем они отличаются.


вот они:
1-ая таблица [dbo].[Table_1]:

Столбец Тип
m_id int
[Ф.И.О. наследодателя] [char](50)
UniqueValue int
UniqueKey int
[дата смерти] [date]
[паспортные данные] [char](50)

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

Столбец Тип
n_id int
[Ф.И.О. наследодателя] [char](50)
UniqueKey int
[дата смерти] [date]
[паспортные данные] [char](50)

а сам запрос выложен ранее.
про св-во foreign key я выяснила что foreign key одной таблицы должен ссылаться на primary key другой.
а мне эта связь с primary key 1-ой таблицы, а именно с m_id не нужна. мне нужно связать ФИО наследодателя 1-ой таблицы table_1 c тем же ФИО наследодателя 2-ой таблицы инф-ция о наследодателе, и также дата смерти и пасп. данные - они должны быть одинак в 1-ой и 2-ой таблице. тут как то по другому надо связать через другой оператор, а не foreign key.
15 янв 13, 15:51    [13773012]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить