Informix-SQL (SE) 4.10.DD6 (MS-DOS 6.22):
У меня есть таблица, созданная как: "pcuser" .tablename. Я попытался удалить эту таблицу с:
DROP TABLE tablename;
и получил следующее сообщение об ошибке:
545: No write permission for table pcuser.tablename.
Поскольку мое приложение является однопользовательским, и я не обеспокоен ограничением привилегий для какой-либо таблицы, я установил ISQL 4.10 без защиты паролем (т. Е. Для запуска механизма SE не требуется имя пользователя или пароль). Таким образом, по умолчанию и единственным именем пользователя / владельцем таблицы всегда является «pcuser». В ISQL 2.10 мне не нужно было указывать "table-owner" .tablename при удалении, создании, чтении или записи в таблицу. Тем не менее, я предоставил все на имя таблицы для общественности и предоставил DBA для общественности. Я также выполнил те же заявления о предоставлении гранта в 4.10.
Нужно ли указывать владельца таблицы при отбрасывании таблицы, например:
DROP TABLE "pcuser".tablename;
Извините, у меня нет документации по ISQL 4.10.
Ниже приведены экранные выходы execute.out строк SYSTABAUTH и SYSTABLES для имени таблицы:
SYSTABAUTH:
grantor [pcuser ]
grantee [public ]
tabid [102 ]
tabauth [su-idxa]
SYSTABLES:
tabname [tablename ]
owner [pcuser ]
dirpath [C:\DBFILES.DBS\TABLENAME ]
[ ]
tabid [102 ]
rowsize [256 ]
ncols [48 ]
nindexes [5 ]
nrows [1082594 ]
created [07-13-2010]
version [9 ]
tabtype [T]
audpath [ ]
[ ]
Ниже приведены два процесса в моем приложении. Первый корректно работает, но второй завершается ошибкой с ошибкой 545 в операторе удаления таблицы:
{CREATEDB.SQL - First SQL Proc}
DROP DATABASE dbfiles;
CREATE DATABASE dbfiles;
CREATE TABLE tablename
(
col1 char(18),
col2 char(60),
[...]
) in "C:\DBFILES.DBS\TABLENAME";
LOAD FROM "tablename.unl" INSERT INTO tablename;
CREATE UNIQUE INDEX tablename_idx1 ON tablename (col1);
GRANT ALL ON tablename TO PUBLIC;
GRANT DBA TO PUBLIC;
UPDATE STATISTICS;
---
{DROPTAB.SQL - Second SQL Proc}
DROP TABLE tablename;
^
ERROR 545: No Write Permission....