powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Сменить владельца таблицы ASA 9.02
9 сообщений из 9, страница 1 из 1
Сменить владельца таблицы ASA 9.02
    #35430419
Misha_LV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите пожалуйста как сменить владельца таблицы в Sybase ASA 9.02 если это возможно.
...
Рейтинг: 0 / 0
Сменить владельца таблицы ASA 9.02
    #35430758
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha_LV wrote:

> Подскажите пожалуйста как сменить владельца таблицы в Sybase ASA 9.02

Никак.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Сменить владельца таблицы ASA 9.02
    #35432436
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зато можно:
Код: plaintext
1.
select * into user2.sometable from user1.sometable;
drop table user1.sometable;
...
Рейтинг: 0 / 0
Сменить владельца таблицы ASA 9.02
    #35466060
lioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White OwlЗато можно:
Код: plaintext
1.
select * into user2.sometable from user1.sometable;
drop table user1.sometable;

Например:
Таблица user1.sometable с полями id (int primary key autoincrement), name (varchar(50)):
id name
=======
1 str
3 qwe
4 asd
5 zxc
8 qip
Этот запрос создаст таблицу user2.sometable с полями id (int), name (varchar(50)).
А если я потом командой alter table укажу поле id как primary key autoincrement, это не вызовет ошибки, что в поле id нет значений 2, 6 и 7 ?
...
Рейтинг: 0 / 0
Сменить владельца таблицы ASA 9.02
    #35466199
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lionerА если я потом командой alter table укажу поле id как primary key autoincrement, это не вызовет ошибки, что в поле id нет значений 2, 6 и 7 ?Нет, не вызовет. autoincrement не требует непрерывности значений. Там может быть сколько угодно "дыр". Это только новые записи будут получать номер max(id)+1 а старые трограться не будут.
...
Рейтинг: 0 / 0
Сменить владельца таблицы ASA 9.02
    #35466336
lioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите какой правильный синтаксис должен быть у запроса alter table для таблицы t1, чтобы указать, что поле ID нужно сделать PRIMARY KEY и AUTOINCREMENT ?
...
Рейтинг: 0 / 0
Сменить владельца таблицы ASA 9.02
    #35466347
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для подобных задач удобнее всего запустить Централ, включить в нем логгирование действий, потом сделать все что нужно через Централ. А потом посмотреть получившийся лог. Там будет много записей по чтению стуктуры таблицы, но если поискать - обязательно найдутся и команды на модификацию структуры.

Это будет что-то в духе:
Код: plaintext
1.
alter table sometable alter id numeric( 10 ) not null default autoincrement;
alter table sometable add primary key (id);
...
Рейтинг: 0 / 0
Сменить владельца таблицы ASA 9.02
    #35468807
lioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Получилось.
Создание таблицы:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
CREATE TABLE "testuser"."testtable"
(
 "id"    			integer NOT NULL,
 "dirhouse"      		integer NOT NULL,
 "no_flat"       		varchar( 4 ) NULL,
 "no_account"    		integer NULL	
)
Копирование данных:
Код: plaintext
1.
2.
3.
insert into "testuser"."testtable" (id, dirhouse, no_flat, no_account)
select id, dirhouse, no_flat, no_account
from "dba"."Account"
Установка ключевого поля и автоинкремента:
Код: plaintext
1.
2.
ALTER TABLE "testuser"."testtable" MODIFY id DEFAULT AUTOINCREMENT
alter table "testuser"."testtable" add primary key (id)
Еще вопросы на засыпку:
1) как скриптом создать этого "testuser" ?
2) как скриптом создать копию триггера таблицы "dba"."Account" для таблицы "testuser"."testtable" ?
...
Рейтинг: 0 / 0
Сменить владельца таблицы ASA 9.02
    #35469785
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lioner1) как скриптом создать этого "testuser" ?
Процитирую сам себя: Для подобных задач удобнее всего запустить Централ, включить в нем логгирование действий, потом сделать все что нужно через Централ. А потом посмотреть получившийся лог.
А еще полезно читать BOL (документацию).
Код: plaintext
grant connect to testuser;


lioner2) как скриптом создать копию триггера таблицы "dba"."Account" для таблицы "testuser"."testtable" ?Копию.... Ну это пожалуй Централ сделает не самым оптимальным образом, хотя на идею натолкнуть сможет...
Задача не совсем тривиальна, но и не особо сложна:
1) Надо достать текст триггера на оригинальной таблице. Вот такое например, даст тебе список всех триггеров на данной таблице
Код: plaintext
1.
2.
3.
4.
select * from SYS.SYSTRIGGER where table_id =
                        (
                          select table_id from SYS.SYSTAB where table_name='sometable' and creator=
                                        ( select user_id from SYS.SYSUSER where user_name='dba' )
                        );
2) Вытаскиваешь из полученого резалтсета текст триггера (trigger_defn), событие по которому триггер запускается (event), порядок запуска, имя триггера и тд и тп. Если перед первоначальным созданием триггера была включена опция базы preserve_source_format, то поле source будет заполнено, иначе только trigger_defn. Поищи по форуму, эта опция неоднократно обсуждалась.
3) На основе полученой информации о старом триггере, формируешь скрипт создания нового триггера и запускаешь его через execute immediate.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Сменить владельца таблицы ASA 9.02
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]