Vtiger Преобразует запрос MYSQL в запрос Postgres [дубликат]

Краткий ответ: ваш метод foo() возвращается немедленно, а вызов $ajax() выполняется асинхронно после возврата функции . Проблема заключается в том, как и где сохранить результаты, полученные при вызове async, после его возврата.

В этом потоке было задано несколько решений. Возможно, самый простой способ - передать объект методу foo() и сохранить результаты в члене этого объекта после завершения асинхронного вызова.

function foo(result) {
    $.ajax({
        url: '...',
        success: function(response) {
            result.response = response;   // Store the async result
        }
    });
}

var result = { response: null };   // Object to hold the async result
foo(result);                       // Returns before the async completes

Обратите внимание, что вызов foo() ] все равно не вернут ничего полезного. Однако результат асинхронного вызова теперь будет сохранен в result.response.

230
задан SeldomNeedy 18 March 2015 в 00:15
поделиться

5 ответов

Попробуйте выполнить эту команду:

ALTER TABLE your_table ADD COLUMN key_column BIGSERIAL PRIMARY KEY;

Попробуйте использовать тот же DB-пользователь, что и , созданный в таблице.

253
ответ дан A.H. 23 August 2018 в 17:43
поделиться

Возможно, я немного опаздываю, чтобы ответить на этот вопрос, но я работаю над этим вопросом на своей работе :)

Я хотел написать столбец «a_code» = c1, c2, c3 , c4 ...

Сначала я открыл столбец с именем ref_id и типом serial. Затем я решил свою проблему с помощью этой команды:

update myschema.mytable set a_code=cast('c'||"ref_id" as text) 
0
ответ дан elias 23 August 2018 в 17:43
поделиться

Создайте автоматически увеличивающий первичный ключ в postgresql, используя пользовательскую последовательность:

Шаг 1, создайте свою последовательность:

create sequence splog_adfarm_seq
    start 1
    increment 1
    NO MAXVALUE
    CACHE 1;
ALTER TABLE fact_stock_data_detail_seq
OWNER TO pgadmin;

Шаг 2, создайте таблицу

CREATE TABLE splog_adfarm
(
    splog_key    INT unique not null,
    splog_value  VARCHAR(100) not null
);

Шаг 3, вставьте в таблицу

insert into splog_adfarm values (
    nextval('splog_adfarm_seq'), 
    'Is your family tree a directed acyclic graph?'
);

insert into splog_adfarm values (
    nextval('splog_adfarm_seq'), 
    'Will the smart cookies catch the crumb?  Find out now!'
);

Шаг 4, наблюдайте за строками

el@defiant ~ $ psql -U pgadmin -d kurz_prod -c "select * from splog_adfarm"

splog_key |                            splog_value                             
----------+--------------------------------------------------------------------
        1 | Is your family tree a directed acyclic graph?
        2 | Will the smart cookies catch the crumb?  Find out now!
(3 rows)

В двух строках есть клавиши, начинающиеся с 1 и увеличиваются на 1, как определено последовательностью.

Bonus Elite ProTip:

Программисты ненавидят типизацию, а ввод nextval('splog_adfarm_seq') раздражает. Вместо этого вы можете ввести DEFAULT для этого параметра, например:

insert into splog_adfarm values (
    DEFAULT, 
    'Sufficient intelligence to outwit a thimble.'
);

. Для того чтобы выше работала, вы должны определить значение по умолчанию для этого столбца ключа в таблице splog_adfarm. Что красивее.

30
ответ дан Eric Leschinski 23 August 2018 в 17:43
поделиться

Если вы хотите использовать числа в последовательности, определите новую последовательность с чем-то вроде

CREATE SEQUENCE public.your_sequence
    INCREMENT 1
    START 1
    MINVALUE 1
;

, а затем измените таблицу, чтобы использовать последовательность для id:

ALTER TABLE ONLY table ALTER COLUMN id SET DEFAULT nextval('your_sequence'::regclass);
2
ответ дан Paul Roub 23 August 2018 в 17:43
поделиться

Если вы хотите сделать это в pgadmin, это намного проще. Кажется, что в postgressql добавляется автоматическое приращение к столбцу, сначала нам нужно создать последовательность автоматического увеличения и добавить ее в требуемый столбец. Мне это понравилось.

1) Во-первых, вам нужно убедиться, что для вашей таблицы есть первичный ключ. Также сохраните тип данных первичного ключа в bigint или smallint. (Я использовал bigint, не мог найти тип данных, называемый серийным, как упоминалось в других ответах в другом месте)

2) Затем добавьте последовательность, щелкнув правой кнопкой мыши по последовательности-> добавить новую последовательность. Если в таблице нет данных, оставьте последовательность как есть, не вносите никаких изменений. Просто сохраните его. Если существуют существующие данные, добавьте последнее или самое большее значение в столбце первичного ключа в значение Текущее значение на вкладке «Определения», как показано ниже.

3) Наконец, добавьте строку nextval('your_sequence_name'::regclass) в значение по умолчанию в вашем первичном ключе, как показано ниже.

Убедитесь, что имя последовательности здесь правильно. Это все, и автоматический прирост должен работать.

15
ответ дан toing_toing 23 August 2018 в 17:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: