Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Если CONSTRAINT аналог в MS-SQL SERVER(е)? [D6, MSSQL]


Страницы:   1 2

MS-REM ©   (2005-08-09 22:08:00) 

Что то пробываю её а она мне ошибку выдает что нет такой команды :(


Fay   (2005-08-10 14:58:00) [1]

:) Пора на пенсию :)
Так лучше :
Ты ссылаешься на ещё не сущеструющее поле (не указано - значит с тем же именем) ещё не созданной таблицы. Запятая перед REFERENCES не нужна.

:)


Fay   (2005-08-10 14:56:00) [2]

2 MS-REM   (10.08.05 1:03) [19]
1) "Пон ил", "прав ельно", "вид ет"... Учи русский
2) К [4] -
CREATE TABLE SALESREPS
...
FOREIGN KEY (REP_OFFICE),
    REFERENCES OFFICES
     ON DELETE SET NULL

Ты ссылаешься на ещё не несущеструющее поле (не указано - значит с тем же именем) ещё не созданной таблицы. Запятая не перед REFERENCESнужна.


ANB   (2005-08-10 07:06:00) [3]


> REFERENCES TABLE // А это с какой таблицай?
- с таблицей, которая уже создана. А у тебя она ниже создавалась.


> ON DELETE (Какие ещё можно?)
- вот это уже от сервера зависит.


sniknik   (2005-08-10 01:48:00) [4]

> Ладно объясните мне вот это как делается правельно
ну прям одолжение сделал, разрешил себя поучить... ;о)

Энциклопедия SQL (+CD)
Грофф Дж., Вайнберг П.
Перед вами — новое издание наиболее полного руководства по использованию структурированного языка запросов SQL, применяемого для работы с базами данных. В книге подробно описываются возможности SQL, реализованные в самых распространенных СУБД и определенные в стандарте ANSI/ISO для SQL. В ней вы найдете подробную информацию, касающуюся применения инструкций для работы с базами данных, стандартов SQL, а также популярных API-интерфейсов, служащих для доступа к таким базам данных, как ODBC, SQL/CLI, JDBC и OCI. Большое внимание уделяется вопросам безопасности данных, влиянию объектных технологий на SQL и интеграции SQL с XML. На прилагающемся компакт-диске содержатся дистрибутивы трех СУБД: SQL Server 2000, IBM DB2 и MySQL. Книга предназначена для всех пользователей, интересующихся языком запросов SQL.


заметь - "базами", "стандартов" (во множественном числе!)...
когда примеры переписываеш, внимательнее, переписывай для одной и той же базы и sql диалекта, в книге и то что используеш. и все "попрет" ;о).

а заново писать тебе прям сдесь аналогичную книжку... смысла нет. смысл есть леч спать. ;)


MS-REM   (2005-08-10 01:03:00) [5]

Ладно объясните мне вот это как делается правельно

CONSTRAINT NAME // ну это я так понил имя связи?
FOREIGN KEY (COLUM) // это типа ЗАДАЕМ СВЯЗЬ?
REFERENCES TABLE // А это с какой таблицай?
ON DELETE (Какие ещё можно?)


И почему у меня не видет связаные таблица?

Автор: Дж. Грофф.


sniknik   (2005-08-10 00:56:00) [6]

> 4. Если ты весь этот пример сконопатил из книжки - выброси ее нафиг в печку.
ага, книжку нафиг, невзирая на название - "экзотический диалект sql - sql сервер зимбабве, племя мумба-юмба, первый опыт" ;о)), а для зимбабве это было бы самое то.

> ON DELETE SET NULL
есть в access (jet)

p.s. не гони на книгу сгоряча... ;о))


ANB   (2005-08-10 00:30:00) [7]

4. Если ты весь этот пример сконопатил из книжки - выброси ее нафиг в печку.
ЗЫ. Автор не Глушаков часом ?


ANB   (2005-08-10 00:29:00) [8]

1. С чего ты решил, что она есть ?
2. Ты будешь постить команды ?
3. Ты понимаешь, чего хочешь от MS SQL своими командами ?


MS-REM   (2005-08-10 00:09:00) [9]

Проверял QA :)

Карочи все эти ON DELETE SET NULL по ходу нет у MSSQL
я их ЗАМЕНИЛ на ON DELETE CASCADE! не знаю правельно или нет...

Сейчас он у меня ругается
на не существующию таблицу хотя она существует :0

Server: Msg 1767, Level 16, State 1, Line 1
Foreign key 'HASREP' references invalid table 'SALESREPS'.
Server: Msg 1750, Level 16, State 1, Line 1
Could not create constraint. See previous errors.


ANB   (2005-08-09 23:32:00) [10]


> MS-REM   (09.08.05 23:27) [13]
- нету у меня MS SQL. Слазь в справку и посмотри формат команды. Могу глянуть оракловый, но тебе это слабо поможет. Чем проверял ? Проверяй создание каждой таблицы по отдельности. И запости команду, на которую ругается.


MS-REM   (2005-08-09 23:27:00) [11]

В общем проверил все! Но оно сейчас ругается но одно!
ON DELETE SET NULL

вот список ошибок
Server: Msg 156, Level 15, State 1, Line 10
Incorrect syntax near the keyword 'SET'.
Server: Msg 156, Level 15, State 1, Line 24
Incorrect syntax near the keyword 'ON'.
Server: Msg 156, Level 15, State 1, Line 41
Incorrect syntax near the keyword 'SET'.
Server: Msg 156, Level 15, State 1, Line 60
Incorrect syntax near the keyword 'SET'.


MS-REM   (2005-08-09 23:17:00) [12]

Спсибо!


ANB   (2005-08-09 23:10:00) [13]

QA = Query Analyzer.


ANB   (2005-08-09 23:09:00) [14]

AQ = Query Analyzer. Входит в состав MS SQL Server. В него вводятся команды SQL и выполняются. Здесь у тебя пакет команд. Их можно (и нужно) сначала выполнить по отдельности. Потом отладить пакет, а уже потом обрамлять кавычками и пихать в дельфю. Ты учебники читал перед передиранием примера из книжки ?


MS-REM   (2005-08-09 23:05:00) [15]

ANB ©   (09.08.05 22:58) [6]
Убери кавычки


А как я их уберу если  это DELPHI то есть выполняется
с помощью
CommandText :=
   'CREATE TABLE CUSTOMERS '+
     '( CUST_NUM INTEGER NOT NULL, '+
...


и ещё что значет QA?
и как понять по одной комдой?


ANB   (2005-08-09 23:00:00) [16]

И еще совет - не переписывай примеры из книжек. Лучше на соло позанимайся. Толку больше будет.


ANB   (2005-08-09 22:59:00) [17]

'CREATE TABLE CUSTOMERS '+
    '( CUST_NUM INTEGER NOT NULL, '+
       'COMPANY VARCHAR(20) NOT NULL, '+
      'CUST_REP INTEGER, '+
  'CREDIT_LIMIT MONEY, '+
   'PRIMARY KEY (CUST_NUM) , '+
    'CONSTRAINT HASREP '+
   'FOREIGN KEY (CUST_REP) '+
    'REFERENCES SALESREPS '+
     'ON DELETE SET NULL )  '+


ANB   (2005-08-09 22:58:00) [18]


> MS-REM   (09.08.05 22:50) [5]
- либо в книге косяк, либо перепечатал неверно. Убери кавычки и выполняй команды по одной в QA, пока они не станут правильными.

А вот здесь у тебя явная ошибка :

> 'CREATE TABLE CUSTOMERS '+
>      '( CUST_NUM INTEGER NOT NULL, '+
>         'COMPANY VARCHAR(20) NOT NULL, '+
>        'CUST_REP INTEGER, '+
>    'CREDIT_LIMIT MONEY, '+
>     'PRIMARY KEY (CUST_NUM) '+     <<< --- где то здесь не хватает запятой
>      'CONSTRAINT HASREP '+
>     'FOREIGN KEY (CUST_REP) '+
>      'REFERENCES SALESREPS '+
>       'ON DELETE SET NULL )  '+


MS-REM   (2005-08-09 22:50:00) [19]

Это я с книги переписываю...

А как оно дожно быть правельным?

Вот  карочий весь код.

 'CREATE TABLE CUSTOMERS '+
     '( CUST_NUM INTEGER NOT NULL, '+
        'COMPANY VARCHAR(20) NOT NULL, '+
       'CUST_REP INTEGER, '+
   'CREDIT_LIMIT MONEY, '+
    'PRIMARY KEY (CUST_NUM) '+
     'CONSTRAINT HASREP '+
    'FOREIGN KEY (CUST_REP) '+
     'REFERENCES SALESREPS '+
      'ON DELETE SET NULL )  '+

  'CREATE TABLE SALESREPS '+
     '( EMPL_NUM INTEGER NOT NULL, '+
           'NAME VARCHAR(15) NOT NULL, '+
            'AGE INTEGER, '+
          'TITLE VARCHAR(10), '+
      'HIRE_DATE DATE NOT NULL, '+
        'MANAGER INTEGER, '+
          'QUOTA MONEY, '+
          'SALES MONEY NOT NULL, '+
    'PRIMARY KEY (EMPL_NUM), '+
    'FOREIGN KEY (MANAGER), '+
     'REFERENCES SALESREPS, '+
      'ON DELETE SET NULL, '+
     'CONSTRAINT WORKSIN '+
    'FOREIGN KEY (REP_OFFICE), '+
     'REFERENCES OFFICES '+
      'ON DELETE SET NULL )  '+

  ' CREATE TABLE OFFICES '+
       '( OFFICE INTEGER NOT NULL, '+
           'CITY VARCHAR(15) NOT NULL, '+
         'REGION VARCHAR(10) NOT NULL, '+
            'MGR INTEGER, '+
         'TARGET MONEY, '+
          'SALES MONEY NOT NULL, '+
    'PRIMARY KEY (OFFICE), '+
     'CONSTRAINT HASMGR '+
    'FOREIGN KEY (MGR) '+
     'REFERENCES SALESREPS  '+
      'ON DELETE SET NULL )  '+

   'CREATE TABLE ORDERS '+
    '( ORDER_NUM INTEGER NOT NULL, '+
     'ORDER_DATE DATE NOT NULL, '+
           'CUST INTEGER NOT NULL, '+
            'REP INTEGER, '+
            'MFR CHAR(3) NOT NULL, '+
        'PRODUCT CHAR(5) NOT NULL, '+
            'QTY INTEGER NOT NULL, '+
         'AMOUNT MONEY NOT NULL, '+
    'PRIMARY KEY (ORDER_NUM), '+
     'CONSTRAINT PLACEDBY '+
    'FOREIGN KEY (CUST) '+
     'REFERENCES CUSTOMERS '+
      'ON DELETE CASCADE, '+
     'CONSTRAINT TAKENBY '+
    'FOREIGN KEY (REP) '+
     'REFERENCES SALESREPS '+
      'ON DELETE SET NULL, '+
     'CONSTRAINT ISFOR '+
    'FOREIGN KEY (MFR, PRODUCT), '+
     'REFERENCES PRODUCTS '+
      'ON DELETE REYTRICT )   '+

   'CREATE TABLE PRODUCTS'+
       '( MFR_ID CHAR(3) NOT NULL, '+
     'PRODUCT_ID CHAR(5) NOT NULL, '+
    'DESCRIPTION VARCHAR(20) NOT NULL, '+
    'PRICE MONEY NOT NULL, '+
    'QTY_ON_HAND INTEGER NOT NULL, '+
    'PRIMARY KEY (MFR_ID, PRODUCT_ID) ) ' ;


Если знаешь подскажи.


ANB   (2005-08-09 22:50:00) [20]

ALTER TABLE Table1 ADD (
 CONSTRAINT FK_Table1_Table2 FOREIGN KEY (FldTable1_Table2_ID)
   REFERENCES Table2 (ID));

Примерный синтаксис.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо