Что такое код fbsql_affected_rows

SQL Set Max Affected Rows для сеанса

Я работаю с группой людей в среде DEV, и иногда мы немного беспокоимся о F5. Я бы сказал, что ежемесячно кто-то обновляет каждую запись в таблице, а не только 1 или 2, потому что они пропускают предложение или делают что-то вроде

В этом случае они хотели прокомментировать или удалить строку выбора. Мой вопрос в том, можете ли вы установить что-то для автоматического отката, если затронуто более X строк? Я никогда не вижу, чтобы они обновлялись более 400 или около того. Я сказал им, что вы начинаете транзакцию и @@RowCount, чтобы проверить, но так как это 2 заявления, а второй имеет правильный номер, это не помогает.

Я сомневаюсь, что SQL Server из коробки предлагает вам решение. если это большая проблема, затем разверните резервную копию базы данных SQL Server с регулярно запланированными резервными копиями журналов, чтобы вы могли восстановить данный момент времени. Или ограничьте их доступ, чтобы они обновляли/вставляли/удаляли/запрашивали только из procs (это, вероятно, не будет масштабироваться, но это опция). Или попросите их использовать TOP во всех своих запросах.

Тем временем, убедитесь, что ваши разработчики никогда, никогда, не устраняют проблему в системе prod.

Похоже, разработчики, выполняющие эти запросы на update должны быть более строгими. Каждый update—, даже в development—, должен быть написан с begin tran и rollback пока не будет уверен, что запрос обновит правильные строки.

Например, я всегда использую следующий шаблон:

— РЕДАКТИРОВАТЬ —

Адаптируя это к вашему примеру, вы можете захватить @@ROWCOUNT в переменной и обратиться к ней позже. Например:

SQL_AffectedRows Функция возвращает количество строк, с которыми взамодействовал запрос

Реальной необходимости использования данной функции я не вижу, так как не вижу смысла получать количество строк затронутых запросом, но для отладки может быть необходимым инструментом, если вы оптимизировали код и заносите данные не построчно, а за один запрос множество строк.

Инфо из sqlx.inc:

Описание:
Думаю что те кто реально будут использовать данную функцию, не нуждаются в конкретном примере.
А те кто не будет — зачем он им в обще нужен, по этому его тут нет.

sql — mysql_affected_rows Возвращает False в успешном запросе?

У меня сложная временная сортировка по этой проблеме PHP/MySQL. Позвольте мне показать вам мою базу данных и объяснить мою ситуацию:

Вышеупомянутый запрос UPDATE выполняется просто в моем скрипте, phpMyAdmin и терминале MySQL. Однако mysql_affected_rows($affected) всегда дает мне эту ошибку:

Илон Маск рекомендует:  Что такое код getpid

Я знаю, что это означает, что мой запрос не удался, но каждый раз, когда я вхожу в базу данных, я вижу, что значения были обновлены.

Удаление параметра из функции появляется, чтобы очистить все. Однако у меня скорее есть идентификатор как параметр функции, просто чтобы убедиться, что я имею в виду, и для страхования кода.

Codeigniter affected_rows для простой вставки не работает для SQL Server

Примечание: Я использую SQL Server

Это мой код модели:

Данные вставляются успешно, но affected_rows() функция нарушит PHP. Там нет ошибки, ни предупреждения. Когда я пытаюсь echo / print_r ценности affected_rows() , она ничего не возвращает (не нулевой, просто ничего).

Если я echo / print_r после того , как affected_rows() они не показали , потому что (я считаю) моя PHP была остановка.

Данные вставляются успешно , так как она была вставлена , прежде чем я позвонить affected_rows() .

Пожалуйста, пожалуйста, помогите мне

Большое спасибо за вашу помощь :)

Это не упоминается в вашем вопросе, но вы используете CodeIgniter 2.x . И вы не видите ничего, потому что вы получили display_errors и / или error_reporting отключены.

affected_rows() не работает с драйвером «SQLSRV» в CI2, как он вызывает несуществующую функцию (есть недостающее письмо от вызова функции, чтобы быть более точными). Другими словами — это ошибка.

CodeIgniter 2 находится в режиме обслуживания безопасности до 31 октября 2015 года ( как раз через неделю) и не принимает исправления не связанная с безопасностью, а это означает , что эта ошибка будет не фиксирована. После 31 — го октября, он будет полностью упразднен и версия 3 будет поддерживаются только один.

Решение: Обновление до последней версии CodeIgniter 3.0.x, в настоящее время .

Как узнать кол-во изменённых строк в yii?

Все отличного пятничного дня!)

Второй месяц работаю с yii, очень нравится)
Столкнулся с проблемой в работе с yii.
Кто, как решил проблему?)

Вот такой кусок кода:

в $res у меня возвращается «0», если ячейки были обновлены. Но если строки были добавлены, то возвращается 1.

Как узнать кол-во затронутых строк?
Спасибо!)

  • Вопрос задан более трёх лет назад
  • 477 просмотров

Критерий «on duplicate key update» есть только в MySQL (и форках) и его не шибко хорошо использовать, равно как и хардкодить SQL-запрос, когда есть DAO/AR. Если по существу, то «on duplicate key update» согласно официальной документации возвращает 1, если ряд был вставлен и 2, если обновлён. Поскольку это поведение самого MySQL, то средствами Yii это не обойти.

Для решения задачи, я бы пересмотрел само выражение и подход к написанию запросов. Например:

Код написан вслепую и не тестировался. Его однозначно необходимо заточить под свои нужды, я лишь предлагаю свой вариант. Более громоздко? Да, но мы:

  • избавляемся от привязки к MySQL;
  • от довольно пагубной привычки писать «чистый» SQL, когда в нашем распоряжении есть такие инструменты, как ActiveRecord и конструктор запросов
  • приучаемся использовать param binding, что, впрочем, не избавляет от необходимости sanitize’ить данные

Return number of rows affected by UPDATE statements

How can I get the number of rows affected by an UPDATE query in a Stored Procedure (SQL Server 2005), as a resultset. e.g.

Илон Маск рекомендует:  Что такое код ingres_query

3 Answers 3

This is exactly what the OUTPUT clause in SQL Server 2005 onwards is excellent for.

Results in the following being returned

In your particular case, since you cannot use aggregate functions with OUTPUT , you need to capture the output of INSERTED.* in a table variable or temporary table and count the records. For example,

You might need to collect the stats as you go, but @@ROWCOUNT captures this:

Not the answer you’re looking for? Browse other questions tagged sql sql-server or ask your own question.

Linked

Hot Network Questions

Subscribe to RSS

To subscribe to this RSS feed, copy and paste this URL into your RSS reader.

site design / logo © 2020 Stack Exchange Inc; user contributions licensed under cc by-sa 4.0 with attribution required. rev 2020.11.12.35412

Оконные функции – то, что должен знать каждый T-SQL программист. Часть 1.

Еще в Microsoft SQL Server 2005 появился интересный функционал – оконные функции. Это функции, которые позволяют осуществлять вычисления в заданном диапазоне строк внутри предложения Select. Для тех, кто не сталкивался с этими функциями возникает вопрос – «Что значит оконные?». Окно – значит набор строк, в рамках которого происходит вычисление. Оконная функция позволяет разбивать весь набор данных на такие окна.

Конечно, все что могут оконные функции возможно реализовать и без них. Однако оконные функции обладают большим преимуществом перед регулярными агрегатными функциями: нет нужды группировать набор данных для расчетов., что позволяет сохранить все строки набора с их уникальными идентификаторами. При этом результаты работы оконных функций просто добавляются к результирующей выборке как еще одно поле.

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

Окно определяется с помощью инструкции OVER(). Давайте рассмотрим синтаксис этой инструкции:

Оконная функция (столбец для вычислений) OVER ([PARTITION BY столбец для группировки] [ORDER BY столбец для сортировки] [ROWS или RANGE выражение для ограничения строк в пределах группы])

Ассортимент функций мы рассмотрим во второй части статьи. Скажу лишь, что они разделяются на: агрегирующие, ранжирующие, смещения.

Для демонстрации работы оконных функций предлагаю на тестовой таблице:

Есть ли способ подавить «x rows affected» в SQLCMD из командной строки?

Есть ли способ подавить «строки x затронуты» в SQLCMD из командной строки?

Я запускаю сценарий MSBuild и не хочу, чтобы он забивал мой журнал на моем сервере сборки.

Мне не нужно добавлять «SET NOCOUNT ON» в каждый скрипт, поэтому, если есть способ сделать это из командной строки, это будет фантастично.

Создан 06 янв. 10 2010-01-06 15:47:51 Josh Kodroff

3 ответа

Как создать сценарий запуска с помощью SET NOCOUNT ON в сценарии (присвойте скрипту переменной среды SQLCMDINI). http://msdn.microsoft.com/en-us/library/ms162773.aspx

Создан 06 янв. 10 2010-01-06 16:08:04 fupsduck

Я думаю, что вариант SQLCMDINI должен работать. – Cade Roux 06 янв. 10 2010-01-06 21:40:07

Cade is right -i и -q взаимовыгодны — я обновлю. – fupsduck 06 янв. 10 2010-01-06 22:03:21

Илон Маск рекомендует:  Dos fn 2dh установить время dos

Создайте файл с именем setnocount.sql с содержанием:

И вы могли бы быть в состоянии сделать -i setnocount.sql,otherscript.sql с помощью нескольких файлов имеют и фактически является «включены» общим первым файл.

Создан 06 янв. 10 2010-01-06 21:17:26 Cade Roux

ссылка сломана :-(какая-нибудь идея, что это было? – roufamatic 25 мар. 16 2020-03-25 16:27:05

@roufamatic Link работает forme, страница — это MSDN под названием ‘sqlcmd Utility’ с помощью пути к меню: Database Engine -> Технический справочник -> Справочная утилита командной строки (Database Engine) – dckuehn 25 июл. 16 2020-07-25 19:39:53

Вы также можете запустить несколько строк в параметре -Q , разделенных точкой с запятой, как показано ниже

Создан 15 янв. 13 2013-01-15 05:49:11 Rob

Есть ли способ игнорировать имя столбца на выходе? – singhswat 23 янв. 18 2020-01-23 16:22:08

SQL Set Max Affected Rows для сеанса

Я работаю с группой людей в среде DEV, и иногда мы немного беспокоимся о F5. Я бы сказал, что ежемесячно кто-то обновляет каждую запись в таблице, а не только 1 или 2, потому что они пропускают предложение или делают что-то вроде

В этом случае они хотели прокомментировать или удалить строку выбора. Мой вопрос в том, можете ли вы установить что-то для автоматического отката, если затронуто более X строк? Я никогда не вижу, чтобы они обновлялись более 400 или около того. Я сказал им, что вы начинаете транзакцию и @@RowCount, чтобы проверить, но так как это 2 заявления, а второй имеет правильный номер, это не помогает.

Я сомневаюсь, что SQL Server из коробки предлагает вам решение. если это большая проблема, затем разверните резервную копию базы данных SQL Server с регулярно запланированными резервными копиями журналов, чтобы вы могли восстановить данный момент времени. Или ограничьте их доступ, чтобы они обновляли/вставляли/удаляли/запрашивали только из procs (это, вероятно, не будет масштабироваться, но это опция). Или попросите их использовать TOP во всех своих запросах.

Тем временем, убедитесь, что ваши разработчики никогда, никогда, не устраняют проблему в системе prod.

Похоже, разработчики, выполняющие эти запросы на update должны быть более строгими. Каждый update—, даже в development—, должен быть написан с begin tran и rollback пока не будет уверен, что запрос обновит правильные строки.

Например, я всегда использую следующий шаблон:

— РЕДАКТИРОВАТЬ —

Адаптируя это к вашему примеру, вы можете захватить @@ROWCOUNT в переменной и обратиться к ней позже. Например:

sql — mysql_affected_rows Возвращает False в успешном запросе?

У меня сложная временная сортировка по этой проблеме PHP/MySQL. Позвольте мне показать вам мою базу данных и объяснить мою ситуацию:

Вышеупомянутый запрос UPDATE выполняется просто в моем скрипте, phpMyAdmin и терминале MySQL. Однако mysql_affected_rows($affected) всегда дает мне эту ошибку:

Я знаю, что это означает, что мой запрос не удался, но каждый раз, когда я вхожу в базу данных, я вижу, что значения были обновлены.

Удаление параметра из функции появляется, чтобы очистить все. Однако у меня скорее есть идентификатор как параметр функции, просто чтобы убедиться, что я имею в виду, и для страхования кода.

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL