MSSQL: добавить строку в таблицу и вернуть ее ИД
Добрый день. Столкнулся с интересной задачей (MSSQL 2012)- я в таблицу добавляю запись и пытаюсь вернуть ее ИД (первая колонка таблицы ИД, вторая — строка). Есть возможность сделать это одним запросом? Спасибо
Отслеживать
user177221
задан 20 апр 2015 в 12:40
Leonard Bertone Leonard Bertone
2,056 4 4 золотых знака 28 28 серебряных знаков 40 40 бронзовых знаков
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
лучше через OUTPUT
CREATE TABLE #t (ID int IDENTITY(1,1), Field1 varchar(10)) Declare @i table (id int) INSERT INTO #t (Field1) OUTPUT inserted.ID INTO @i (id) VALUES ('test') select id from @i
Отслеживать
ответ дан 20 апр 2015 в 12:56
1,938 1 1 золотой знак 11 11 серебряных знаков 9 9 бронзовых знаков
INSERT INTO MyTable (SomeColumn) VALUES ('SomeValue') SELECT SCOPE_IDENTITY()
Отслеживать
ответ дан 20 апр 2015 в 12:44
user177221 user177221
Если ID нужно выдавать куда-то наружу ( например, в код на C#, ASP и т.д. ), я бы посоветовал впереди ( перед INSERT ) поставить SET NOCOUNT ON;
29 фев 2016 в 19:50
Вот в этой ветке https://stackoverflow.com/questions/42648/best-way-to-get-identity-of-inserted-row хорошо рассказали различные способы. SCOPE_IDENTITY() может не выдать нужного значения, если есть распараллеливание процессов, во всех остальных случаях его можно использовать.
Цитирую: «The best (read: safest) way to get the identity of a newly-inserted row is by using the output clause. Any other method is not guaranteed to return the correct ID when using parallelism — even if you aren’t using parallelism now, writing your SQL like this will ensure you don’t have to change it should you move to a parallel environment (e.g. SQL server cluster).»
Отслеживать
ответ дан 20 апр 2015 в 12:49
1,861 1 1 золотой знак 14 14 серебряных знаков 25 25 бронзовых знаков
проблема с SCOPE_IDENTITY() была исправлена до выхода 2012.
– user177221
20 апр 2015 в 14:02
@PashaPash спасибо, не знала 🙂
20 апр 2015 в 15:06
- sql
- база-данных
- sql-server
-
Важное на Мете
Связанные
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.15.1019
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Как добавить строчку в sql
Подскажите, пожалуйста, как мне добавить строку с новой нформацией в таблицу? Можно ли это сделать как-то пакетно, разом много строк с различной инфой, или только построчно?
А 1С их корректно потом схавает ? Или таблицы не 1С ?
Таблица своя.
(0) Можно.
Синтаксис: ВыполнитьSQL_ИзТЗ(Таблица, КоличествоСтрок)
Таблица — тип: ТаблицаЗначений. Источник данных для параметров подготовленного запроса. Имена колонок не имеют значения, берется в расчет позиция колонки, т.е. значения первой колонки подставляются в качестве первого параметра запроса, вторая колонка соответствует второму параметру и т.д.;
КоличествоСтрок — тип: Число. Необязателен, по умолчанию равен 0. Данный параметр определяет размер блока, который будет заполняется параметрами из таблицы, без пересылки на сервер базы, как только количество строк в блоке достигнет указанного — в параметре производится пересылка данных на сервер с последующем очищением буфера. Если передано нулевое значение данного параметра, то расчет размера блока производится по следующей формуле: всего общее количество строк переданной таблицы умножается на 0.1 ( т.е. 10% от общего числа строк).
Описание: выполняет подготовленный запрос для каждой строки из переданной таблицы. При этом значения параметров запроса устанавливаются из строки переданной таблицы.
Параметры могут быть добавлены методом ДобПараметр / AddParam или построены ПостроитьПараметры / BuildParams. В случае если количество параметров равно нулю, происходит попытка построить параметры автоматически.
Допустимо чтобы значения параметров были агрегатного типа, при этом происходит их преобразование к идентификаторам соответственно типам SQL параметров.
rc = СоздатьОбъект(«ODBCRecordSet»);
rc.Execute(«DELETE FROM [TestSQL].[dbo].[MyTable]»);
rc.Close();
rc.Prepare(«INSERT INTO MyTable (NAME, AGE, SALARY, DATEOFBIRTH) VALUES(?, ?, ?, ?)»);
тз = СоздатьОбъект(«ТаблицаЗначений»);
тз.НоваяКолонка(«NAME»,»Строка»);
тз.НоваяКолонка(«AGE»,»Число»,4);
тз.НоваяКолонка(«SALARY»,»Число»,18,2);
тз.НоваяКолонка(«DATEOFBIRTH»,»Дата»);
for i = 1 to 10 do
тз.НоваяСтрока();
тз.NAME = «Панферов Вартан»;
тз.AGE = 28;
тз.SALARY = 1453.12;
тз.DATEOFBIRTH = ‘17.11.1974’;
тз.НоваяСтрока();
тз.NAME = «Гусев Дмитрий»;
тз.AGE = 23;
тз.SALARY = 1233.99;
тз.DATEOFBIRTH = ‘09.03.1980’;
enddo;
rc.ExeSQL_FromTV(тз);
Добавление строки в таблицу
народ извените за ламерский вопрос
есть таблица reg и еть форма после заполнения формы нажимаю кнопку и надо чтобы данные из формы добавились новой стракой в таблицу предположим таблица состоит из поля 1 и 2 и в фомк тожк поля 1 и 2 как должен выглядеть запрос чтобы данные добовлялись
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Добавление строки-дубля в таблицу
Необходимо заполнить таблицу в БД1 информацией из из другой таблицы в БД2 (структура таблиц.
Добавление строки таблицу БД
Привет! Есть пример из msdn о том как добавить данные в таблицу БД.
Добавление строки в таблицу
Добрый день,нужно добавить новую строку в таблицу..работаю с аксесом.. клавиши навигации не.
85 / 61 / 69
Регистрация: 15.03.2007
Сообщений: 6,907
INSERT INTO tableName ([1], [2]) VALUES (1,2)
tableName замени на имя своей таблицы
1 и 2 на значения своих полей
Регистрация: 17.05.2017
Сообщений: 23
вопрос по сложнее
как добавить строку сверху
из SQL читаем строку из 2 к примеру полей если она нас устраивает то добавляем сверху получаем сдвиг всех строк вниз
к примеру новости всегда самая последняя из базы сверху
как правильно сделать это примерчик наводящий можно ?
1634 / 1135 / 171
Регистрация: 23.07.2010
Сообщений: 6,713
Сообщение от dogmat7 
как добавить строку сверху
нету понятия выше/ниже. есть понятие сортировка
Регистрация: 17.05.2017
Сообщений: 23
отлично а пример есть ?
есть строка читаю из базы она проверяется на определенный символ присутствует или нет потом я хочу добавить ее в
qtablewiget ( как вы сказали запустить сортировку и вывести последнюю запись наверху по дате добавления к примеру )
пример будет ? все равно не ясно как сортировки делать после или до или сдвигать строки вниз и добавлять в строку 0
4214 / 3054 / 582
Регистрация: 21.01.2011
Сообщений: 13,205
Сообщение от dogmat7 
все равно не ясно как сортировки делать
Сортировка в SQL делается единственным способом — с пом. кляузы ORDER BY
Регистрация: 17.05.2017
Сообщений: 23
тут не Sql обсуждаем запросы там то я понимаю что к чему
вопрос построении модели по 1 row и ADD row в qtablewiget
пример будет ? просто можно и по кнопке сделать пример добавить текстовое поле в верх не заменяя а сдвигая вниз остальные записи
1634 / 1135 / 171
Регистрация: 23.07.2010
Сообщений: 6,713
Чувак, не заносит на поворотах, не?
4214 / 3054 / 582
Регистрация: 21.01.2011
Сообщений: 13,205
Сообщение от dogmat7 
тут не Sql обсуждаем запросы
Тут как раз форум по БД, в частности по MS SQL. А формы и кнопки — это в других форумах.
Регистрация: 17.05.2017
Сообщений: 23
вырвано из контекста
вопрос о том что я хочу добавлять SQL строку
но я ее проверяю и потом заношу как текст
и уже тут нужно строить модель правильно из текста
а в запросе уже понятно, что я буду брать последнее значение в базе и несколько полей и сортировки там мне понятны
1634 / 1135 / 171
Регистрация: 23.07.2010
Сообщений: 6,713
Сообщение от dogmat7 
вырвано из контекста
вопрос о том что я хочу добавлять SQL строку
но я ее проверяю и потом заношу как текст
и уже тут нужно строить модель правильно из текста
а в запросе уже понятно, что я буду брать последнее значение в базе и несколько полей и сортировки там мне понятны
перечитал 5 раз. ничего не понял. Кто на ком стоял?
Регистрация: 17.05.2017
Сообщений: 23
предисловие тут кусок рабочего кода по кнопке добавляется поле с верху потом правится
и планирую дописывать запрос SQL и потом вставлять данные и проверять уже с помощью жителей форума написал часть
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
#include "mainwindow.h" #include "ui_mainwindow.h" #include MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) Qt::AlignVCenter); cards->setTextAlignment(Qt::AlignCenter } } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_pushButton_clicked() ui->tblClass->insertRow(0); //только пустая строка ui->tblClass->setItem(0, 0, new QTableWidgetItem("25.06.2017
Как добавить или обновить строку sql, если элемент с нужным id существует?
Как добавить (если элемент с нужным id несуществует) или обновить строку (если элемент с нужным id существует)?
Так вопрос более правильно построен!
В общем, нужно, что бы случае существования строки с id обновилась, в обратном случае просто добавилась!
1. Не учитывает случая если строки не сущетвует.
UPDATE `table` SET `block`=»234″ WHERE `id`=»2″;
2. Думал что можно будет сделать одним запросом, и так же не учитывает если строки не сужествует
DELETE FROM `table` WHERE `id`=’2′;
INSERT INTO `table` (‘block’, `id`) VALUE («234», «2»);
Где то я чувствую у меня пробел в знания, приношу извинения если вопрос где то поднимался, или это слишком очевидно. (гугл не нашел, вероятно я не правильно гуглю, не до конца понимаю как это должно происходить)
- Вопрос задан более трёх лет назад
- 930 просмотров
