|
|
|
ASE 12.5.1 Проблема с CREATE TABLE
|
|||
|---|---|---|---|
|
#18+
Не работает конструкция вида if not exists ( select 1 from dbo.sysobjects t, dbo.sysusers u where t.type='U' and t.uid=u.uid and u.name='dbo' and t.name='T1') create table dbo.T1(...) Говорит, что объект уже существует. Он действитедьно существует, на условие в IF принимает значение "ложь" и CREATE TABLE просто не должен выполниться, то есть конструкция вида if 1=2 create table dbo.T1(...) Приводит к той же ошибке. Все бы ничего, но это часть скрипта созданного Sybase Power Designer :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2004, 10:52 |
|
||
|
ASE 12.5.1 Проблема с CREATE TABLE
|
|||
|---|---|---|---|
|
#18+
А КАК это не работает ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2004, 12:32 |
|
||
|
ASE 12.5.1 Проблема с CREATE TABLE
|
|||
|---|---|---|---|
|
#18+
Ругается вот так: Server Message: Number 2714, Severity 16 Line 2: There is already an object named 'T1' in the database. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2004, 12:49 |
|
||
|
ASE 12.5.1 Проблема с CREATE TABLE
|
|||
|---|---|---|---|
|
#18+
Проблема в следующем. Запрос этот (batch) дает ошибку не на стадии выполнения, когда можно проверить условие и что-то не делать или делать, а еще на стадии валидации. Короче, сервер парсит запрос, производит его семантический анализ и смотрит : Что он тут делает ? Ага , когда-то создает таблицу T1. А может он создавать таблицу T1 ? А фиг, не может, она уже есть. Так вот, должно это выглядеть, чтобы работало , так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Т.е. сначала таблица удаляется, если она есть, а затем создается. Как заставить Sybase Power Designer генерировать именно так - я не знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 11:58 |
|
||
|
ASE 12.5.1 Проблема с CREATE TABLE
|
|||
|---|---|---|---|
|
#18+
авторКак заставить Sybase Power Designer генерировать именно так - я не знаю. Там каждый DBMS можно настроить, фактически все описано скриптами - создание, удаление, получение обьектов и т.д. Я например для Sybase ASA там много чего подправлял, чтобы PD правильно все и красиво реинженерил и генерил. P.S. В форуме Проектирование кстати по PD очень много топиков и людей, которые им пользуются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 12:22 |
|
||
|
ASE 12.5.1 Проблема с CREATE TABLE
|
|||
|---|---|---|---|
|
#18+
MasterZiv Т.е. сначала таблица удаляется, если она есть, а затем создается. Дело в том, что таблица может быть не пустая. Задача звучит так: Если таблицы нет, то ее надо создать, а если есть - не трогать. Конечно, мы это обойдем, но со стороны ASE 12.5.1 это явный баг! В 11.5 все это работало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 16:52 |
|
||
|
ASE 12.5.1 Проблема с CREATE TABLE
|
|||
|---|---|---|---|
|
#18+
Нет, это не баг, это фича. Фраза уже классическая, но если знаешь, как ASE выполняет запросы (есть несколько фаз, ну да я писал вроде бы) - тогда все понятно. Но я согласен, поведение не очень вразумительное. Но если вы напишите Sybase вам точно ответят, что это - ожидаемое поведение. А насчет того, что можно сделать, если вам нужно такое поведение - 1) надо разбить запрос на создание на два батча, в стиле, как я писал 2) Ошибку создания таблицы просто игнорировать. Можно также применить select syb_quit() для окончания сеанса работы с сервером, но это может не подойти, если далее надо в этом же скрипте что-то еще сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2004, 15:38 |
|
||
|
ASE 12.5.1 Проблема с CREATE TABLE
|
|||
|---|---|---|---|
|
#18+
Фича это или баг, не так важно как назовешь. Это грязь. Запрос вида if not exists ( select 1 from dbo.sysobjects t, dbo.sysusers u where t.type='U' and t.uid=u.uid and u.name='dbo' and t.name='T1') create table dbo.T1(...) не должен приводить к ошибке. Это стандартный прием, его используют CASE-средства, тот же Sybase Power Designer. Такие запросы прекрасно проходят во всех версиях MS SQL Server и Sybase ASA, а также в Sybase ASE 11.5. Просто перемудрили в оптимизации разбора (трансляции) запросов. Кроме того, необходимо соблюдать приемственность версий, а этот момент у ASE весьма болезненен. У меня за долшие годы сложилось следующее мнение: у MS SQL версии достаточно отлажены, на них можно положиться. С ASE можно работать, но администрировано очень громоздко, плохо продумано. В ASA - каждый релиз это букет серьезных багов, хотя функционально очень привлекательный продукт. И еще он БД может напрочь испортить, например при некорректной остановке сервера, а средств типа DBCC просто нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2004, 16:58 |
|
||
|
ASE 12.5.1 Проблема с CREATE TABLE
|
|||
|---|---|---|---|
|
#18+
Это НЕ стандартный прием. И что такое вообще "стандартный прием CASE" ? SDesignor-овский что ли ? Вон ErWIN замечательно генерирует для каждой СУБД то, что в ней работает, и все. Теперь насчет ASE - не нравиться - не работай. Я например против MSSQL ничего не имею, если бы вот он еще и не только на Виндах работал ... Кстати, по идее и в MSSQL такой запрос должен приводить к тому же результату - ошибке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2004, 12:09 |
|
||
|
ASE 12.5.1 Проблема с CREATE TABLE
|
|||
|---|---|---|---|
|
#18+
MasterZiv Кстати, по идее и в MSSQL такой запрос должен приводить к тому же результату - ошибке. Я же написал, что там эта конструкция работает, как и в более ранних версиях ASE. MasterZivТеперь насчет ASE - не нравиться - не работай. Жизнь есть жизнь, приходится работать не только с тем, чем хочешь. Я же написал - проблема это не самая важная, справимся. Просто удивился логике продукта. Не ндо принимать так близко к сердцу. А форум на то и форум, чтобы вопросы задавать и свое мнение высказывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2004, 13:02 |
|
||
|
|

start [/forum/topic.php?fid=55&fpage=122&tid=2014401]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 232ms |
| total: | 358ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...