powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запрос с INSERT OPENQUERY
21 сообщений из 21, страница 1 из 1
Запрос с INSERT OPENQUERY
    #39166388
maksim.yugai
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Задал этот вопрос в разделе MSSQL, меня отправили сюда. В общем, вопрос в следующем. Выполняю запрос для добавления строки из MSSQL в прилинкованную БД MySQL:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
insert openquery (MYSQL, '
	select 
		smcreatorid, smownerid, modifiedby, 
		setype, description, createdtime, 
		modifiedtime, viewedtime, status, 
		version, presence, deleted, label
	from vtiger_crmentity')
values(1, 1, 1,  'HelpDesk', 'details test6 insert with smss', GETDATE(), GETDATE(), null, null, 0, 1, 0, 'test6 insert with smss')



После чего возникает ошибка
Код: sql
1.
[MySQL][ODBC 5.3(a) Driver][mysqld-5.5.34-0ubuntu0.13.04.1]Duplicate entry '0' for key 'PRIMARY'".


Там есть еще одно поле crmid, которое является PK. Так вот, поскольку я получаю эту ошибку значит поле crmid не является AUTO_INCREMENT. Если я выполняю этот же запрос но с добавлением поля crmid и присвоением ей любого инта, то все классно.

Как правильно составить вышеуказанный insert openquery запрос, чтобы у меня crmid автоматически инкрементировался? Доступа на БД MySQL нет.
...
Рейтинг: 0 / 0
Запрос с INSERT OPENQUERY
    #39166416
maksim.yugai
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я намерен использовать
Код: sql
1.
select max(crmid)+1 from openquery(MYSQL, 'select crmid from vtiger_crmentity') as [crmid+1] 

вот этот запрос для увеличения значения id. Есть ли другой способ? Не такой громоздкий. Спасибо.
...
Рейтинг: 0 / 0
Запрос с INSERT OPENQUERY
    #39166436
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maksim.yugaiЕсть ли другой способ? Не такой громоздкий.Правильный способ - использовать AUTO_INCREMENT.
А max(crmid)+1 не дает гарантию уникальности при вставке.
...
Рейтинг: 0 / 0
Запрос с INSERT OPENQUERY
    #39166440
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maksim.yugaiТак вот, поскольку я получаю эту ошибку значит поле crmid не является AUTO_INCREMENT.какие хитрые умопостроения... а главное, зачем они, если можно выполнить show create table vtiger_crmentity и узнать наверняка?
...
Рейтинг: 0 / 0
Запрос с INSERT OPENQUERY
    #39166442
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft,

подозреваю, что ТСу нельзя менять структуру той таблицы.
...
Рейтинг: 0 / 0
Запрос с INSERT OPENQUERY
    #39166448
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirmiksoft,

подозреваю, что ТСу нельзя менять структуру той таблицы.Тогда нужно договариваться с тем, у кого есть. Как вариант с тем, от кого получен текущий доступ.
...
Рейтинг: 0 / 0
Запрос с INSERT OPENQUERY
    #39166454
maksim.yugai
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir, вот что выдал запрос show:

Код: sql
1.
CREATE TABLE `vtiger_crmentity` (   `crmid` int(19) NOT NULL,   `smcreatorid` int(19) NOT NULL DEFAULT '0',   `smownerid` int(19) NOT NULL DEFAULT '0',   `modifiedby` int(19) NOT NULL DEFAULT '0',   `setype` varchar(30) NOT NULL,   `description` text,   `createdtime` datetime NOT NULL,   `modifiedtime` datetime NOT NULL,   `viewedtime` datetime DEFAULT NULL,   `status` varchar(50) DEFAULT NULL,   `version` int(19) NOT NULL DEFAULT '0',   `presence` int(1) DEFAULT '1',   `deleted` int(1) NOT NULL DEFAULT '0',   `label` varchar(255) DEFAULT NULL,   PRIMARY KEY (`crmid`),   KEY `crmentity_smcreatorid_idx` (`smcreatorid`),   KEY `crmentity_modifiedby_idx` (`modifiedby`),   KEY `crmentity_deleted_idx` (`deleted`),   KEY `crm_ownerid_del_setype_idx` (`smownerid`,`deleted`,`setype`),   KEY `vtiger_crmentity_labelidx` (`label`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8



Код: sql
1.
CREATE TABLE `vtiger_crmentity` (   `crmid` int(19) NOT NULL, ...., PRIMARY KEY (`crmid`), ...)



Поле не AUTO_INCREMENT.
...
Рейтинг: 0 / 0
Запрос с INSERT OPENQUERY
    #39166458
maksim.yugai
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksofttanglirmiksoft,

подозреваю, что ТСу нельзя менять структуру той таблицы.Тогда нужно договариваться с тем, у кого есть. Как вариант с тем, от кого получен текущий доступ.

Подскажите каким запросом можно сделать поле crmid AUTO_INCREMENT? Может прокатит. =)
...
Рейтинг: 0 / 0
Запрос с INSERT OPENQUERY
    #39166468
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maksim.yugaiПодскажите каким запросом можно сделать поле crmid AUTO_INCREMENT? Может прокатит. =)Примерно так:
Код: sql
1.
ALTER TABLE vtiger_crmentity MODIFY COLUMN crmid INT NOT NULL AUTO_INCREMENT
...
Рейтинг: 0 / 0
Запрос с INSERT OPENQUERY
    #39166469
maksim.yugai
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maksim.yugaimiksoftпропущено...
Тогда нужно договариваться с тем, у кого есть. Как вариант с тем, от кого получен текущий доступ.

Подскажите каким запросом можно сделать поле crmid AUTO_INCREMENT? Может прокатит. =)

Да, нет доступа.

Код: sql
1.
...the current user does not have permissions on that object
...
Рейтинг: 0 / 0
Запрос с INSERT OPENQUERY
    #39166471
maksim.yugai
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftmaksim.yugaiПодскажите каким запросом можно сделать поле crmid AUTO_INCREMENT? Может прокатит. =)Примерно так:
Код: sql
1.
ALTER TABLE vtiger_crmentity MODIFY COLUMN crmid INT NOT NULL AUTO_INCREMENT



Да, спасибо, так и сделал. Нет доступа. Будем искать выход. Спасибо.
...
Рейтинг: 0 / 0
Запрос с INSERT OPENQUERY
    #39166473
maksim.yugai
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо. Выручили. Буду просить добавления атрибута для поля.
...
Рейтинг: 0 / 0
Запрос с INSERT OPENQUERY
    #39166476
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maksim.yugaiБудем искать выход.узнавайте, как этот ид генерируется в той системе
а то ещё наколбасите неправильных, спрашивать-то потом с вас будут
...
Рейтинг: 0 / 0
Запрос с INSERT OPENQUERY
    #39166694
maksim.yugai
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglirmaksim.yugaiБудем искать выход.узнавайте, как этот ид генерируется в той системе
а то ещё наколбасите неправильных, спрашивать-то потом с вас будут

Спасибо. Уже добавили атрибут AUTO_INCREMENT этому полю. Тут все кул.

Возник еще один вопрос. =)

В таблице есть поле ticket_no nvarchar(19). Там находятся значения TT1, TT2, TT3, TT4, TT.... Т.е., с каждой добавленной строкой цифра увеличивается. Как сюда добавить что-нить вроде инкремента?
...
Рейтинг: 0 / 0
Запрос с INSERT OPENQUERY
    #39167264
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нумерация нужна обязательно гарантированно непрерывная? Если нет, рассмотрите вариант со вспомогательной таблицей (в мускле или в мсскле - сами решайте) с единственным автоинкрементным полем. Сначала добавляете запись туда, потом читаете ласт_инсерт_ид/идентити(или как оно в мс называется) и формируете этот номер исходя из полученного значения.
...
Рейтинг: 0 / 0
Запрос с INSERT OPENQUERY
    #39168231
maksim.yugai
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir,

Желательно чтобы было по порядку. А какой-нить вариант без вспомогательной таблицы может быть?
...
Рейтинг: 0 / 0
Запрос с INSERT OPENQUERY
    #39168258
maksim.yugai
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir,

Спасибо. Вопрос снят.
...
Рейтинг: 0 / 0
Запрос с INSERT OPENQUERY
    #39168261
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirНумерация нужна обязательно гарантированно непрерывная? Если нет, рассмотрите вариант со вспомогательной таблицей (в мускле или в мсскле - сами решайте) с единственным автоинкрементным полем. Сначала добавляете запись туда, потом читаете ласт_инсерт_ид/идентити(или как оно в мс называется) и формируете этот номер исходя из полученного значения.а в чем практическая разница от автоинкрементного поля.....?
...
Рейтинг: 0 / 0
Запрос с INSERT OPENQUERY
    #39168284
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov,

автоинкремент в таблице может быть только один, и у ТСа он уже есть. А ему нужен ещё один.
...
Рейтинг: 0 / 0
Запрос с INSERT OPENQUERY
    #39168321
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglir,

вроде бы не было автоинкремента если я не упустил ничего... да ладно ... смысл понял - "сторонний" автоинкремент. Надо взять на заметку...
...
Рейтинг: 0 / 0
Запрос с INSERT OPENQUERY
    #39168326
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinovвроде бы не было автоинкремента если я не упустил ничего...упустил :)maksim.yugaiУже добавили атрибут AUTO_INCREMENT этому полю.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запрос с INSERT OPENQUERY
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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