Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 30.11.2014
Сообщений: 14
Oracle

В контекстном меню нет пункта "Добавить триггер"

28.04.2015, 14:54. Показов 1246. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Установлены Oracle 11g, PL/SQL и Visual Studio 2010.
Создал dataset для всех моих таблиц. Перетащил на форму таблицу, добавляю в неё данные, но не могу поставить null в id. Хочу так делать, потому что у меня есть триггер, который автоматически генерит id из sequance. В Обозревателе серверов, если зайти в мою БД и эту таблицу, триггера там тоже не видно. На сайте MSDN прочитал, что можно кликнуть правой кнопкой мыши на таблицу, после чего в контекстном меню нажать Добавить триггер, но такого у меня тоже нету.
Также триггер INSTEAD OF дальше будет нужен для редактирования представлений.
Или это все не работает в dataset и надо делать руками?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.04.2015, 14:54
Ответы с готовыми решениями:

Нет пункта Открыть таблицу в контекстном меню
Здравствуйте! Подскажите как сделать так чтобы в sql server 2008 появился пункт в контекстном меню открыть таблицу? В sql server 2005 он...

Создание пункта в контекстном меню
Здравствуйте, открытие файлов .pdf настроил по умолчанию программой Foxit Reader, для открытия другого файла .pdf в другим приложением...

Создание непростого пункта в контекстном меню, как?
Здравствуйте! В чем собственно дело... Значит я хочу создать на рабочем столе 3 папки - что-то вроде "Выполненное"...

7
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
28.04.2015, 15:16
Цитата Сообщение от грик Посмотреть сообщение
Или это все не работает в dataset и надо делать руками?
В жисть не стал бы строить структуру БД через какой-то dataset. Проектирование БД - это отдельно, клиентская программа - отдельно. Все, что создается в БД, делай через родные оракловые инструменты. Заодно и протестировать там же сможешь. А то когда не знаешь, чья ошибка проявляется, базы данных или своей программы, фиг разберешься.
0
0 / 0 / 0
Регистрация: 30.11.2014
Сообщений: 14
28.04.2015, 15:18  [ТС]
Так я и хочу это все делать в PL/SQL. Но триггеры не видит Visual Studio.
0
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
28.04.2015, 15:22
Цитата Сообщение от грик Посмотреть сообщение
Но триггеры не видит Visual Studio.
А зачем ему их видеть? Триггер все равно вызывается внутри Oracle, причем не явно, а по событию (например, INSERT). Поэтому видит он их или нет - фиолетово.
0
0 / 0 / 0
Регистрация: 30.11.2014
Сообщений: 14
28.04.2015, 15:24  [ТС]
Тогда мне нельзя использовать Dataset? Потому что он мне не дает вставить null в id, как я написал в первом сообщении.
0
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
28.04.2015, 16:17
Цитата Сообщение от грик Посмотреть сообщение
Тогда мне нельзя использовать Dataset?
А ты хотел бы, чтобы Dataset не только видел триггер, но еще и интерпретировал текст в нем? Ведь в триггере может делаться все что угодно и интерпретировать исходный текст (особенно большой) - задача нетривиальная даже для человека. А насчет "нельзя вставлять NULL" - задача частая и наверняка имеет решение. Просто я никогда не работал в C#. В Delphi я бы просто ручками написал INSERT, всего и делов. Альтернатива - не пользовать триггер, а дергать sequence самому и записывать значение в id.
0
0 / 0 / 0
Регистрация: 30.11.2014
Сообщений: 14
28.04.2015, 16:22  [ТС]
Спасибо. Наверное, буду руками это все делать через insert, чтобы dataset не видел схемы.
0
0 / 0 / 0
Регистрация: 30.11.2014
Сообщений: 14
03.05.2015, 21:31  [ТС]
Сделал так. Вывожу в грид:
C#
1
2
3
4
5
6
7
8
9
10
11
OracleCommand cmd = new OracleCommand("SELECT ID_TEAM,TEAM_NAME AS Назва,COUNTRY AS Країна,CITY AS Місто,OFFICE_PHONE AS Телефон_офісу FROM max.team", conect.con);
        oda = new OracleDataAdapter();
        oda.SelectCommand = cmd;
        oda.SelectCommand.CommandType = CommandType.Text;
        bild = new OracleCommandBuilder(oda);
        oda.Fill(ds);
        if (ds.Tables.Count > 0)
        {
          dataGridView1.DataSource = ds.Tables[0].DefaultView;
          dataGridView1.Columns[0].Visible = false;
        }
Сохраняю обновление по кнопке:
C#
1
2
3
4
oda.Update(ds);
        OracleCommand cmd = new OracleCommand("COMMIT", conect.con);
        cmd.ExecuteNonQuery();
        cmd.Dispose();
Удаляю по кнопке:
C#
1
2
3
4
5
6
7
8
9
10
for (int i = 0; i < dataGridView1.RowCount; i++)
      {
        bool t = true;
        for (int j = 1; j < dataGridView1.ColumnCount; j++)
        {
          if (!dataGridView1[j, i].Selected)
            t = false;
        }
        if (t) dataGridView1.Rows.RemoveAt(i);
      }
Когда таблица в запросе, то все нормально, могу при вставке вводить NULL в ID_TEAM (есть триггер, который генерит id), удалять и редактировать. Если же написать в SELECT представление (у которого есть триггеры INSTEAD OF на вставку, удаление и обновление), то могу добавлять, но когда редактирую или удаляю, вылетает ошибка: Dynamic sql generation failed. No key information found. Если искусственно задать id как один из столбцов, то оно уже не даст вставить NULL при добавлении, но при этом работает удаление и редактирование.

Добавлено через 8 часов 1 минуту
Пишу свой update для адаптера, есть свой select.
C#
1
2
3
4
5
6
7
8
9
OracleCommand cmd = new OracleCommand("SELECT ID_FOOTBALLER, SURNAME AS Прізвище, NAME AS Ім_я, PATRONYMIC AS По_батькові,DATE_OF_BIRTH AS Дата_народження,ROLE AS Позиція,NATIONALITY AS Національність,WORKING_LEG AS Робоча_нога, GROWTH_SM AS Зріст_см, WEIGHT_KG AS Вага_кг, RATABLE_VALUE AS Оціночна_вартість, ID_CURRENT_TEAM AS ід, TEAM_NAME AS Клуб FROM max.adm_potential_footballer", conect.con);
        OracleCommand upd = new OracleCommand("UPDATE adm_potential_footballer SET SURNAME=:SURNAME, NAME=:NAME, PATRONYMIC=:PATRONYMIC, DATE_OF_BIRTH=:DATE_OF_BIRTH,ROLE=:ROLE,NATIONALITY=:NATIONALITY,WORKING_LEG=:WORKING_LEG, GROWTH_SM=:GROWTH_SM, WEIGHT_KG=:WEIGHT_KG, RATABLE_VALUE=:RATABLE_VALUE, ID_CURRENT_TEAM=:ID_CURRENT_TEAM, TEAM_NAME=:TEAM_NAME WHERE ID_FOOTBALLER=:ID_FOOTBALLER", conect.con);
 
        oda = new OracleDataAdapter();
        oda.SelectCommand = cmd;
        oda.SelectCommand.CommandType = CommandType.Text;
        oda.UpdateCommand = upd;
        oda.UpdateCommand.CommandType = CommandType.Text;
        bild = new OracleCommandBuilder(oda);
Как правильно инициализировать параметры запроса? Мне нужно их инициализировать столбцом из datagridview.
Я понимаю, что это неправильно, потому что не работает, но все же...
C#
1
upd.Parameters.Add(new OracleParameter("SURNAME", dataGridView1.Columns[1]));
Грид заполняется так:
C#
1
2
3
4
5
oda.Fill(ds);
if (ds.Tables.Count > 0)
        {
          dataGridView1.DataSource = ds.Tables[0].DefaultView;
        }
Как это сделать правильно?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.05.2015, 21:31
Помогаю со студенческими работами здесь

Как при нажатии пункта в контекстном меню вывести что то на окно
Как при нажатии пункта в контекстном меню вывести что то на окно, читал документацию не нашёл. например нажатие на эксель пишет в label...

Создание своего пункта в контекстном меню и выполнение привязанной к этому пункту задачи
Здравствуйте! Подскажите, пожалуйста, как создать свой пункт во всплывающем меню? Excel MS Office 2007. Комплексная задача такова....

Нет блокнота в контекстном меню
Как восстановить в контекстном меню &quot;Создать - Текстовый файл txt&quot;?

2 пункта "открыть" в контекстном меню
столкнулся с ситуацией - у всех папок в проводнике в контекстном меню оба первых пункта - &quot;Открыть&quot;. Причем верхний написан жирно...

В контекстном меню файлов образов нет Alcohol120%
Всем привет! Проблема, собственно, вот в чем. При вызове контекстного меню на файлах iso и mdf в нем нет пунктов &quot;смонтировать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru