Identity insert унтраалттай байна

Материалын гарчигнаас харахад өнөөдөр би энэ талаар ярих болно, зарим тохиолдолд хүснэгтийн ашигтай шинж чанаруудын талаар ярих болно. Microsoft SQLСервер зэрэг IDENTITY_INSERT, энэ өмчийг ашиглан та автоматаар нэмэгдэх талбарт өмнө нь устгасан утгыг оруулж болно, i.e. Алга болсон танигч утгыг бөглөх эсвэл сэргээх.

Магадгүй, олон SQL сервер програмистууд тодорхой шалтгааны улмаас тодорхойлогчийн тодорхойлолтыг тодорхойлсон хүснэгтэд зарим бүртгэлийг устгаж, дараа нь эдгээр бүртгэлийг хуучин утгуудын дагуу сэргээх шаардлагатай болсон тохиолдол гарсан байх. танигч. Мэдээжийн хэрэг таних тэмдэгийг устгаж, шаардлагатай утгууд бүхий мөрүүдийг оруулаад дараа нь таних тэмдгийг сэргээх нь хамгийн түрүүнд санаанд орж ирдэг, гэхдээ үүний тулд таны ойлгож байгаагаар маш олон заль мэхийг хийх шаардлагатай байна. Энэ нь одоогийн ажлын ахиц дэвшилд нөлөөлж байгаа тул үүнийг хурдан хийх ёстой бөгөөд мэдээллийн санд ажиллаж буй хэрэглэгч байхгүй үед энэ нь илүү дээр юм.

Гэвч үнэн хэрэгтээ хүснэгт танигч баганад утгыг оруулах боломжийг олгодог илүү энгийн бөгөөд хамгийн чухал нь зөв арга байдаг бөгөөд энэ нь өмчийг ашиглах явдал юм. Identity INSERT.

MS SQL сервер дэх IDENTITY_INSERT өмч

IDENTITY_INSERTЭнэ нь хүснэгтийн тодорхойлогч баганад тодорхой утгыг оруулах боломжийг олгодог хүснэгтийн шинж чанар юм. автоматаар нэмэгддэг талбарт. Оруулсан танигчийн утга нь одоогийн утгаас бага эсвэл илүү байж болно, жишээлбэл, тодорхой утгыг алгасахын тулд.

Энэ өмчтэй ажиллахдаа зарим нюансуудыг анхаарч үзэх хэрэгтэй бөгөөд тэдгээрийг авч үзье.

  • IDENTITY_INSERT шинж чанар нь сессийн зөвхөн нэг хүснэгтэд АСААЛТтай байж болно, өөрөөр хэлбэл. IDENTITY_INSERT-г нэг сессийн хоёр ба түүнээс дээш хүснэгтэд нэгэн зэрэг ON болгож болохгүй. Хэрэв та нэг SQL хэллэг дэх хэд хэдэн хүснэгтэд IDENTITY_INSERT ON-г ашиглах шаардлагатай бол эхлээд боловсруулагдсан хүснэгтийн утгыг OFF болгож, дараагийн хүснэгтэд IDENTITY_INSERT-г ON болгож тохируулах ёстой;
  • Хэрэв оруулсан танигчийн утга нь одоогийн утгаас их байвал SQL сервер автоматаар оруулсан утгыг одоогийн байдлаар ашиглах болно. хэрэв жишээлбэл, дараагийн танигчийн утга нь 5 бол та IDENTITY INSERT ашиглан 6 гэсэн утгатай танигч оруулбал дараагийн танигчийн утга автоматаар 7 болно;
  • IDENTITY_INSERT-г ашиглахын тулд хэрэглэгч зохих эрхтэй байх ёстой, тухайлбал тухайн объектын эзэмшигч эсвэл sysadmin серверийн үүрэг, db_owner эсвэл db_ddladmin өгөгдлийн сангийн үүргийн гишүүн байх ёстой.

Тиймээс, тодорхойлогч бүхий баганад утга оруулах шаардлагатай нөхцөл байдлыг авч үзье, энэ утгатай мөр устгагдсан гэж үзье, бид үүнийг сэргээх хэрэгтэй.

Эхлээд эх сурвалжийн мэдээллийг харцгаая.

Анхны өгөгдөл

Анхаар! Жишээ болгон би Microsoft SQL Server 2012 Express DBMS-ийг ашиглах болно.

Бид тодорхойлогч баганатай хүснэгтийг үүсгэж, өгөгдлийг бөглөнө.

CREATE TABLE TestTable(ID INT IDENTITY(1,1) NULL БУС АНХДУГААР ТҮЛХҮҮР, TextData VARCHAR(50) NULL БИШ); GO TestTable(TextData) VALUES-д INSERT INSERT("Мөр 1"); INSERT INTO TestTable(TextData) VALUES("Мөр 2"); INSERT INTO TestTable(TextData) VALUES("Мөр 3"); INSERT INTO TestTable(TextData) VALUES("Мөр 4"); INSERT INTO TestTable(TextData) VALUES("Мөр 5"); Туршилтын Хүснэгтээс СОНГОХ * ГАРНА


Дараа нь ID утга нь 3 байх мөрийг устгая.

DELETE TestTable WHERE TextData = "Мөр 3"; ЯВ

Автоматаар нэмэгдэх талбар бүхий хүснэгтийн мөрүүдийг сэргээж байна

Хүснэгтэнд ID = 3 гэсэн утгатай мөр дутуу байгаа бөгөөд бид үүнийг ID = 3-аар сэргээх хэрэгтэй, үүний тулд бид шинэхэн SQL програмистуудын хувьд эхлээд үүнийг туршиж үзээрэй.

INSERT INTO TestTable (ID, TextData) VALUES (3, "Мөр 3"); ЯВ


Таны харж байгаагаар бид ийм мөр оруулах боломжгүй байсан.

Одоо IDENTITY_INSERT шинж чанарыг ашиглацгаая, өөрөөр хэлбэл. TestTable хүснэгтийн утгыг ON болгож тохируулъя.

SET IDENTITY_INSERT Туршилтын Хүснэгтийг АСААЛТТАЙ; INSERT INTO TestTable (ID, TextData) VALUES (3, "Мөр 3"); TestTable GO-оос * СОНГОХ


Энэ удаад бүх зүйл санаснаар болсон.

Анхаар! Хэрэв танигчтай багана нь бидний жишээн дээрх шиг анхдагч түлхүүр бол, хэрэв та аль хэдийн байгаа танигч утгыг оруулахыг оролдвол PRIMARY KEY хязгаарлалт өдөөгдөх болно, өөрөөр хэлбэл өвөрмөц түлхүүрүүд хэрэгжсээр байх болно.

Тэмдэглэл! Шинэхэн програмистуудад миний дэлгэрэнгүй тайлбарласан "T-SQL програмистын арга" номыг уншихыг зөвлөж байна. их хэмжээнийЖишээ нь, би Transact-SQL хэлний бусад ашигтай шинж чанаруудын талаар ярьж байна.

Энэ бол миний хувьд, материал танд хэрэгтэй байсан гэж найдаж байна!



identity_insert унтраалттай (11)

Хэрэв та шинэчлэхийн тулд Liquibase ашигладаг бол SQL серверТа автомат өсөлтийн талбарт бичлэгийн түлхүүр оруулахыг оролдох магадлалтай. Оруулах хэсгээс баганыг хассанаар таны скрипт ажиллах ёстой.

...

Би доорх алдаан дээр дараах скриптийг ажиллуулж байна. Алдаа нь юу вэ, үүнийг хэрхэн шийдвэрлэх вэ?

Сервер: Msg 544, түвшин 16, төлөв 1, мөр 1

Хэрэв IDENTITY_INSERT-г OFF гэж тохируулсан бол 'хүснэгт' хүснэгтэд таних баганын тодорхой утгыг оруулах боломжгүй.

Хэрэв та SQL сервер дээр энэ алдааг олж авбал энэ асуулгыг ажиллуулна уу.

IDENTITY_INSERT хүснэгтийн нэрийг SET ON

Жишээлбэл, хэрэв хүснэгтийн нэр нь оюутан бол асуулга дараах байдлаар харагдана. IDENTITY_INSERT оюутныг ТОХИРУУЛАХ

Хэрэв та вэб програмдаа энэ алдааг авч байгаа эсвэл entity framework ашиглаж байгаа бол эхлээд энэ хүсэлтийг ажиллуулна уу SQL серверболон шинэчлэх аж ахуйн нэгжийн загвар (.edmx файл)ба бүтээх төсөл,мөн энэ алдаа шийдэгдэх болно

Асуудал нь хэрэв та интерфэйс ашиглаж, savechanges аргыг ерөнхий байдлаар хэрэгжүүлж байгаа бол хэвлэхгүй DBContext эсвэл DBSet ашиглахтай холбоотой юм.

Хэрэв энэ нь таны хэрэг бол би DBContex шиг бичихийг зөвлөж байна

MyDBContext.MyEntity.Add(mynewObject)

Тэр. .Хадгалсан өөрчлөлтүүд ажиллах болно

OperationID-д утгыг бүү оруул, учир нь энэ нь автоматаар үүсгэгдэх болно. оролдоод үз:

Хүснэгт оруулах(OpDescription,FilterID) утгууд ("Шатлалын шинэчлэл",1)

Жишээ нь таны хүснэгтийн нэр бол энэ операторыг ашиглаж болно сургууль. Суулгахын өмнө identity_insert тохируулагдсан эсэхийг шалгана уу АСААЛТТАЙ,мөн оруулах хүсэлтийн дараа intest_id-г эргүүлнэ үү OFF

SET IDENTITY_INSERT Сургуулийг ON /* энд асуулга оруулах кодыг оруулна уу */ SET IDENTITY_INSERT сургуулийг унтраана

Хэрэв та ашигладаг бол Oracle SQLХөгжүүлэгч холбогдохын тулд / нэмэхээ бүү мартаарай. sqldev:stmt /

/ sqldev:stmt/identity_insert TABLE-г тохируулах;

Хоёр байна янз бүрийн арга замууд INSERT оруулгуудыг алдаагүй бичих:

1) IDENTITY_INSERT идэвхгүй болсон үед. АНХДАГЧ ТҮЛХҮҮР ID БОДИТ БАЙХ ЁСТОЙ

2) IDENTITY_INSERT-г ON гэж тохируулсан үед. АНХДАГЧ ТҮЛХҮҮР ID БОДИТ БАЙХ ЁСТОЙ

IDENTITY үндсэн түлхүүрээр үүсгэсэн ижил хүснэгтийн доорх жишээний дагуу:

Хүснэгт үүсгэх. (ID INT IDENTITY(1,1) АНХДАГЧ ТҮЛХҮҮР, Овог VARCHAR(40) NULL БИШ, Нэр VARCHAR(40));

1) Эхний жишээнд та IDENTITY_INSERT-г унтраасан үед алдаа гаргахгүйгээр хүснэгтэд шинэ бичлэг оруулах боломжтой. "АНХАН ТҮЛХҮҮР ТАНИЛЦУУЛАГЧ » ЗААВАЛ БАЙХГҮЙ"INSERT IN" мэдэгдлээс, мөн өвөрмөц танигч утга автоматаар нэмэгдэх болно:.Хэрэв энэ тохиолдолд ID INSERT-д байгаа бол та "Хүснэгт дэх баганыг тодорхойлох тодорхой утгыг оруулах боломжгүй байна..." гэсэн алдааг хүлээн авна.

SET IDENTITY_INSERT . OFF; INSERT INTO. (Нэр, Овог) ҮНЭ ЗҮЙ ("JANE", "DOE"); INSERT INTO persons (FirstName,ListName) VALUES ("JOE","BROWN");

2) Хоёрдахь жишээнд IDENTITY_INSERT идэвхжсэн үед алдаа гаргалгүйгээр хүснэгтэд шинэ бичлэг оруулах боломжтой. "АНХАН ТҮЛХҮҮР ТАНИЛЦУУЛАГЧ » БОДИТ БАЙХ ЁСТОЙ"INSERT INTO" мэдэгдлээс, ID утга хараахан байхгүй байна: Хэрэв INSERT-д таниулбар байхгүй бол энэ тохиолдолд та "Identity баганын хүснэгтэд тодорхой утга байх ёстой..." гэсэн алдаа гарч ирнэ.

SET IDENTITY_INSERT . АСААЛТТАЙ; INSERT INTO. (ID,FirstName,LestName) VALUES (5,"JOHN","WHITE"); INSERT INTO. (ID,FirstName,LestName) VALUES (3,"JACK","BLACK");

ХҮСНЭГТИЙН ГАРЦ. [Хүмүүс]:

За, би өөрийнхөөрөө маш энгийн гэж шийдсэн. Таны ижил нэртэй үндсэн түлхүүр нь ангиудынхтай ижил байгаа эсэхийг шалгаарай, гол ялгаа нь таны үндсэн түлхүүр нь ID-г хавсаргах эсвэл тухайн ангийнхтай холбоогүй үндсэн түлхүүрүүдийг зааж өгөх явдал юм.

Та OperationId-ийн утгыг оруулж байна таних багана.

Та хүснэгтэд таних тэмдэг оруулах боломжтой бөгөөд ингэснээр та өөрийн таних утгыг зааж өгөх боломжтой.

SET IDENTITY_INSERT Table1-г ХҮСНЭГТ1 ОРУУЛАХ /*Энд баганын жагсаалт ШААРДЛАГАТАЙ, заавал биш байх ёстойг анхаарна уу*/ (OperationID, OpDescription, FilterID) VALUES (20, "Шатлалын шинэчлэл", 1) SET IDENTITY_INSERT Table1-ийг OFF.

"Хүснэгт оруулах"-д юу ашиглахаа мэдэхгүй байна, гэхдээ хэрэв та зүгээр л зарим утгыг оруулах гэж байгаа бол дараахыг оролдоно уу:

(OpDescription,FilterID) утгууд руу оруулах ("Шатлалын шинэчлэл",1);

Надад ижил алдааны мэдэгдэл байсан ч энэ нь ажиллах ёстой гэж бодож байна. ID нь үндсэн түлхүүр бол автоматаар нэмэгдэх ёстой.

Хүсэлтэд өмнө дурдсан OperationId байгаа бөгөөд энэ нь автоматаар нэмэгддэг тул тэнд байх ёсгүй

Хүснэгт оруулах(OperationID,OpDescription,FilterID) утгууд (20,"Шатлалын шинэчлэл",1)

Тиймээс таны хүсэлт байх болно

Хүснэгт оруулах(OpDescription,FilterID) утгууд ("Шатлалын шинэчлэл",1)



identity_insert нь ms sql (11)-г унтраасан байна

"Хүснэгт оруулах"-д юу ашиглахаа мэдэхгүй байна, гэхдээ хэрэв та зүгээр л зарим утгыг оруулах гэж байгаа бол дараахыг оролдоно уу:

(OpDescription,FilterID) утгууд руу оруулах ("Шатлалын шинэчлэл",1);

Надад ижил алдааны мэдэгдэл байсан ч энэ нь ажиллах ёстой гэж бодож байна. ID нь үндсэн түлхүүр бол автоматаар нэмэгдэх ёстой.

Би доорх алдаан дээр дараах скриптийг ажиллуулж байна. Алдаа нь юу вэ, үүнийг хэрхэн шийдвэрлэх вэ?

Сервер: Msg 544, түвшин 16, төлөв 1, мөр 1

Хэрэв IDENTITY_INSERT-г OFF гэж тохируулсан бол 'хүснэгт' хүснэгтэд таних баганын тодорхой утгыг оруулах боломжгүй.

Хэрэв та холбогдохын тулд Oracle SQL Developer ашиглаж байгаа бол / нэмэхээ бүү мартаарай. sqldev:stmt /

/ sqldev:stmt/identity_insert TABLE-г тохируулах;

Танай байгууллагад энэ хүснэгтэд ID тохируулсан баганын дээр DatabaseGenerated шинж чанарыг нэмнэ үү:

Нийтийн int TaskId (авах; тохируулах; )

OperationID-д утгыг бүү оруул, учир нь энэ нь автоматаар үүсгэгдэх болно. оролдоод үз:

Хүснэгт оруулах(OpDescription,FilterID) утгууд ("Шатлалын шинэчлэл",1)

Та OperationId-ийн утгыг оруулж байна таних багана.

Та хүснэгтэд таних тэмдэг оруулах боломжтой бөгөөд ингэснээр та өөрийн таних утгыг зааж өгөх боломжтой.

SET IDENTITY_INSERT Table1-г ХҮСНЭГТ1 ОРУУЛАХ /*Энд баганын жагсаалт ШААРДЛАГАТАЙ, заавал биш байх ёстойг анхаарна уу*/ (OperationID, OpDescription, FilterID) VALUES (20, "Шатлалын шинэчлэл", 1) SET IDENTITY_INSERT Table1-ийг OFF.

Асуудал нь хэрэв та интерфэйс ашиглаж, savechanges аргыг ерөнхий байдлаар хэрэгжүүлж байгаа бол хэвлэхгүй DBContext эсвэл DBSet ашиглахтай холбоотой юм.

Хэрэв энэ нь таны хэрэг бол би DBContex шиг бичихийг зөвлөж байна

MyDBContext.MyEntity.Add(mynewObject)

Тэр. .Хадгалсан өөрчлөлтүүд ажиллах болно

Хэрэв та SQL серверээ шинэчлэхийн тулд Liquibase ашиглаж байгаа бол автоматаар нэмэгдүүлэх талбарт бичлэгийн түлхүүр оруулахыг оролдох магадлалтай. Оруулах хэсгээс баганыг хассанаар таны скрипт ажиллах ёстой.

...

IDENTITY_INSERT-г ON болгож тохируулахдаа маш болгоомжтой байгаарай. Өгөгдлийн сан нь засвар үйлчилгээний горимд ороогүй бөгөөд нэг хэрэглэгчээр тохируулагдаагүй л бол энэ нь буруу үйлдэл юм. Энэ нь зөвхөн таны оруулгад төдийгүй хүснэгтэд хандахыг оролдож буй хүмүүст нөлөөлдөг.

Та яагаад таних талбарт үнэ цэнийг оруулах гэж оролдож байна вэ?

Хүсэлтэд өмнө дурдсан OperationId байгаа бөгөөд энэ нь автоматаар нэмэгддэг тул тэнд байх ёсгүй

Хүснэгт оруулах(OperationID,OpDescription,FilterID) утгууд (20,"Шатлалын шинэчлэл",1)

Тиймээс таны хүсэлт байх болно

Хүснэгт оруулах(OpDescription,FilterID) утгууд ("Шатлалын шинэчлэл",1)

За, би өөрийнхөөрөө маш энгийн гэж шийдсэн. Таны ижил нэртэй үндсэн түлхүүр нь ангиудынхтай ижил байгаа эсэхийг шалгаарай, гол ялгаа нь таны үндсэн түлхүүр нь ID-г хавсаргах эсвэл тухайн ангийнхтай холбоогүй үндсэн түлхүүрүүдийг зааж өгөх явдал юм.

Хэрэв та SQL сервер дээр энэ алдааг олж авбал энэ асуулгыг ажиллуулна уу.

IDENTITY_INSERT хүснэгтийн нэрийг SET ON

Жишээлбэл, хэрэв хүснэгтийн нэр нь оюутан бол асуулга дараах байдлаар харагдана. IDENTITY_INSERT оюутныг ТОХИРУУЛАХ

Хэрэв та вэб програмдаа энэ алдааг авч байгаа эсвэл entity framework ашиглаж байгаа бол эхлээд SQL сервер дээр энэ асуулгыг ажиллуулж, шинэчилнэ үү. аж ахуйн нэгжийн загвар (.edmx файл)ба бүтээх төсөл,мөн энэ алдаа шийдэгдэх болно

Асуулт: Хүснэгтийн таних баганад тодорхой утгыг оруулах боломжгүй


Өдрийн мэнд.
Алдаа: "IDENTITY_INSERT-г OFF гэж тохируулсан үед 'Хүснэгтийн нэр' хүснэгтийн таних баганад тодорхой утгыг оруулах боломжгүй байна."
Та дараах тушаалаар ON төлөв рүү шилжих хэрэгтэйг би ойлгож байна.
SQL
1 IDENTITY_INSERT ХүснэгтийнНэрийг ТОХИРУУЛАХ
.
Гэвч хүсэлт нь биелээгүй байна ... Магадгүй та хүснэгт хадгалагдаж буй тодорхой мэдээллийн санг бүртгүүлэх шаардлагатай болов уу?
Надад хэлээч.
Баярлалаа.

Хариулт: F5 дарна уу

Асуулт: Auto incr талбарт утга оруулж байна


Сайн уу?

Ерөнхийдөө би mysql-ээс sql сервер рүү өгөгдөл дамжуулах хэрэгтэй.
Би янз бүрийн хэрэгслийг туршиж үзсэн боловч ямар ч ашигтай зүйл тохиолдсонгүй (магадгүй шинэ хүснэгтүүд талбаруудын нэр багатай, талбаруудын төрөл арай өөр байдаг).

Би өөрөө зохиол бичээд оруулах нь дээр гэж шийдсэн. Гэхдээ би өөрийн утгыг тодорхой бичвэл auto incr талбар дээр insert ажиллахгүй гэдгийг олж мэдсэн. Жишээлбэл:

Гэхдээ ижил зүйл.
(талбарын ID өвөрмөц, үндсэн түлхүүр, автоматаар оруулах.)

Юу хийх вэ, хаана ухах вэ?

Маш их баярлалаа!

Хариулт:Одоо би дотоод мэдээллийн сангаас алсын сервер рүү экспортлохыг оролдож байна.
Алсын машин дээр хэдэн сая мөр оруулах нь маш тааламжгүй юм. Би SSMS хэрэгслийг ашигладаг бөгөөд энэ нь "Зөвхөн унших боломжтой "id" баганад өгөгдөл оруулах боломжгүй" гэсэн алдааг өгдөг.
Одооноос би багаж ашиглаж байгаа болохоор SQL бичих газар байхгүй.
Миний ойлгож байгаагаар бид талбайн хязгаарлалтыг арилгах хэрэгтэй (автоматаар оруулах), би үүнийг яаж хийхээ ойлгохгүй байна, хаана ухах вэ?

Баярлалаа!

P.S. Алсын сервер - Azure.

8 минутын дараа нэмсэн
Хараал ид, би хагас өдөр Google-ээр хайгаад олохгүй байтал энэ нийтлэлийг бичсэний дараа нэг шийдэл оллоо.Харин SSMS-ийн "Select source tables and views" цонхон дээр дарах хэрэгтэй болж байна. Хүснэгтийн доод хэсэгт байрлах "Засварлах" товчийг дарж, "Багананд оруулахыг зөвшөөрөх" нүдийг чагтална уу. танигч".
Мөн экспорт хийхдээ өөрийн болон алсын мэдээллийн баазын серверийн кодчилолыг сайтар хянаж, энэ нь таарч байх ёстой.

Асуулт: Одоо байгаа хүснэгтийн талбарт нүд оруулна уу


Сайн уу?
Асуудал байна
Өгөгдлийн санд хэрэглэгч html маягтын талбарт орох үед бөглөх хүснэгт байдаг
Энэ хүснэгтийг вэбсайт дээр шууд харуулав.
Өгөгдлийн сангийн хүснэгтийн мөр бүрт нэг мөр нэмэхийг хэрхэн хэрэгжүүлэх вэ html хэлбэр
Өөрөөр хэлбэл, тухайн сайтад нэгэн хэрэглэгчийн оруулсан зар байна. Эдгээр бүх зарыг br хаягаар ар араас нь харуулдаг. Зар сурталчилгаа бүрт өөр html маягтыг хэрхэн хавсаргах вэ: "Би явна!" дарахад өвөрмөц id бүхий баганын утга тэгээс эхлэн 1-ээр нэмэгдэв. ВКонтакте дээр таалагдах зарчим
Би шинэхэн. Тиймээс энэ асуудлыг хэрхэн шийдвэрлэх талаар мэргэжилтнүүдийн санал бодол сонирхолтой байна. Би долоо хоног зовж байна. Урьдчилан баярлалаа

Асуулт: Би Access 2010 дээр өөр өөр хүснэгтээс утгыг хэрхэн нэмэх, хасах вэ? Ялангуяа баганын утгууд


Access 2010 дээр өөр өөр хүснэгтээс утгыг хэрхэн нэмэх, хасах вэ? Ялангуяа баганын утгууд
За, өөр ямар ч үйлдэл.

Хариулт:

Зурвас Nikon3

Энэ функцийг хэрэгжүүлэхэд шаардлагатай:
“Хэдий хэмжээний мөнгийг төрлөөр нь тодорхойл хуванцар картуудүйлчлүүлэгчид зарцуулсан өнгөрсөн сар."

Таны мэдээллийн санд байгаа бүтцэд асуудлыг шийдэх боломжгүй юм. Зардлын хүснэгт дээр огноо байхгүй! "Зардал" хэсэгт үйл ажиллагааны огноог оруулсан Мөнгө", үүнийг дэнлүүгээс бөглөсөн. Хэрэв бид "сүүлийн" сарыг одоогийнх гэж үзвэл хүсэлт дараах байдалтай байна.

SQL
1 2 3 4 5 6 Газрын зураг СОНГОХ. [Картын код], Газрын зураг. [ Картын төрөл] , СУМ ([ Бэлэн мөнгөний зарлага]. [ Данснаас гарсан хөрөнгийн тоо] ) AS [ Зардлын дүн] FROM ([ Бэлэн мөнгөний зарлага] INNER JOIN Clients ON [ Бэлэн мөнгөний зарлага] . [ Үйлчлүүлэгчийн бүтэн нэр] = Үйлчлүүлэгч [ Client code] ) Inner JOIN Cards ON Clients. [Картын төрөл] = Карт. [Картын код] ХААНА САР ([ Бэлэн мөнгөний зардал]. Гүйлгээний огноо) = САР (огноо () ) Картаар БҮЛЭГЛЭХ. [Картын код], Газрын зураг. [Картын төрөл], Газрын зураг. [Картын төрөл]

"Өнгөрсөн сарын зардал" гэсэн асуултыг хавсралтаас үзнэ үү.

Асуулт: Өөр баганын утгатай тэнцүү биш баганын утгыг хэвлэх


Хүснэгт 1-ийн мөрүүдийг "A", "B", "C" баганатай харуулах шаардлагатай бөгөөд "C" баганын утгууд нь "D" баганын утгатай тэнцүү биш байх ёстой. Хүснэгт 2. Хэрэв та хаана "B" нөхцөлийг бичвэл<>"G" дараа нь бүх зүйлийг өгдөг боломжит сонголтууд(нэг баганын эхний утгыг бүгдийг нь нөгөөгөөс нь ээлжлэн харьцуулах). "B" -ээс "G" утгыг хасах шаардлагатай. Ижил төрлийн өгөгдөл.

Асуулт: Хүснэгт болон хүснэгтийн багана бүр хэр их санах ой эзэлдэгийг яаж мэдэх вэ?


Хүснэгт болон Access хүснэгтийн багана тус бүр хэр их санах ой ашигладаг болохыг би яаж мэдэх вэ?

Хариулт:Тусламжаас. Өгөгдлийн сангийн талбарын төрлүүд

ТекстТекст эсвэл хаяг гэх мэт текст болон тоонуудын хослол, утасны дугаар, хувьцааны дугаар, шуудангийн код гэх мэт тооцоолол шаарддаггүй дугаарууд. Зөвхөн талбарт оруулсан тэмдэгтүүд хадгалагдах бөгөөд текст талбарт ашиглагдаагүй байрлалууд хадгалагдахгүй. Оруулсан тэмдэгтүүдийн дээд хэмжээг хянахын тулд FieldSize шинж чанарыг тодорхойлно.255 тэмдэгт хүртэл.
MEMO талбарТэмдэглэл, тайлбар гэх мэт урт текст эсвэл тоонууд.64,000 хүртэлх тэмдэгтийг гараар эсвэл 1 ГБ хүртэл программчлан оруулсан болно.
ТоонМөнгөний гүйлгээтэй холбоотой тооцоолол (мөнгөний төрлийг ашиглана) тооцохгүйгээр математик тооцоололд ашигласан тоон өгөгдөл. Тоон төрлийг тодорхойлохын тулд FieldSize шинж чанарыг тодорхойлно1, 2, 4 эсвэл 8 байт. Зөвхөн хуулбарлах кодуудад 16 байт
Он сар өдөр цагОгноо, цаг8 байт.
МөнгөВалютын үнэ цэнэ. Тооцооллын явцад дугуйлахаас урьдчилан сэргийлэхийн тулд валютын төрлийг ашигладаг. Тооны бүхэл хэсэгт 15 хүртэлх тэмдэгт, бутархай хэсэгт 4 хүртэлх тэмдэгт байна.8 байт.
ТоолуурБичлэг нэмэх үед дараалсан (1-ээр ялгаатай) эсвэл санамсаргүй тоонуудыг автоматаар оруулах4 байт. Зөвхөн кодын хуулбарлахад зориулагдсан 16 байт.
ЛогикТийм/Үгүй, Үнэн/Худал, Идэвхжүүлсэн/Идэвхгүй гэх мэт ганц эсвэл хоёр утгыг агуулсан талбарууд1 бит.
OLE объектуудОбъектууд (жишээлбэл, баримт бичиг Microsoft Word, хүснэгтүүд Microsoft Excel, зураг, дуу авиа болон бусад өгөгдөл) OLE протоколыг ашигладаг бусад програмуудад үүсгэгдсэн. Объектуудыг хооронд нь холбож эсвэл хүснэгтэд суулгаж болно Microsoft Access. OLE объектыг маягт эсвэл тайланд харуулахын тулд та хавсаргасан объектын хүрээ ашиглах ёстой1 гигабайт хүртэл (дискний зайгаар хязгаарлагддаг).
Гипер холбоосуудГипер холбоосыг хадгалах талбар. Гипер холбоос нь UNC зам эсвэл URL байж болно.Гипер холбоосын хэсэг бүр 2048 тэмдэгт агуулж болно

Нэг талбар нь бичлэгийн уртын нийлбэртэй тэнцүү санах ойг эзэлдэг. Хүснэгт - талбайн уртын нийлбэр. Мөн санах ойг эзэлдэг индексүүд, төрөл бүрийн туслах болон системийн хүснэгтүүд, шинж чанарууд болон бусад зүйлс байдаг.

Access 64-битийн хувьд өөр урт талбарын төрлүүд байдаг

Асуулт: Өгөгдлийн сангийн хуваарь: Хүснэгт дэх баганын тоо гүйцэтгэлд нөлөөлдөг үү?


Хүснэгт дэх баганын тоо гүйцэтгэлд нөлөөлдөг үү?

Хоёр цагийн талбар үүсгэх нь хэрхэн илүү үр дүнтэй байх вэ? , цаг_тоомөн хоёр утгыг гаргаж авна
эсвэл эдгээр утгыг "|" тэмдгээр тусгаарлах нэг tt талбар үүсгэнэ үү. мөн тэдгээрийг SUBSTRING_INDEX(tt , "|", 1) AS time , SUBSTRING_INDEX(tt , "|", -1) AS count_time гэж салгаж гарга.

Хариулт:

Зурвас WeMeSder

SUBSTRING_INDEX AS цаг

Энэ юу вэ, та үүнийг хандалтаас хаанаас олсон бэ?

Зурвас WeMeSder

count_time гэсэн хоёр талбарыг үүсгэж, хоёр утгыг олж авах нь хэр үр дүнтэй байх вэ?

Энэ сонголт нь гарцаагүй. Танд хоёр ДУГААР байгаа бөгөөд үндсэндээ эдгээр нь авсаархан, хурдан өгөгдлийн төрөл юм.

Та 1) тэдгээрийг илүү их зай эзэлдэг, илүү удаан боловсруулдаг мөр болгон хөрвүүлэхийг хүсч байна уу
2) огнооны өгөгдлийн төрөл нь ямар ч тоо оруулахыг зөвшөөрдөггүй - i.e. Мөн огнооны хүчинтэй байдлын чекийг өөрөө бичээрэй
3) огноог огноо, огноог тэмдэгт гэж ялгах нь өөр, танд ийм зүйл тохиолдсон уу?
4) өөр өөр утгатай өгөгдлийг нэг талбарт оруулах санаа бол үнэхээр гайхалтай юм

Асуулт: VBA ашиглан хүснэгтийн баганыг А-аас Я хүртэл хэрхэн эрэмбэлэх вэ?


Сайн уу!

VBA ашиглан хүснэгтийн баганыг А-аас Я хүртэл хэрхэн эрэмбэлэхийг надад хэлээч?

Хариулт:Хүснэгтийн дизайнер нь Sort Order шинж чанартай. Тэнд та эрэмбэлэх талбаруудын нэр, эрэмбэлэх дарааллыг (Asc, Desc) бичиж болно. Нээлттэй хүснэгтэд та багана сонгож, эрэмбэлэх дарааллыг тохируулах боломжтой. Хэрэв та мэдээллийн хуудасны дэлгэцийн зургийг хадгалвал дараагийн дуудлага хийх үед захиалга хадгалагдах болно. Та жишээ нь SetOrderBy командыг ашиглан нээлттэй хүснэгтэд (маягт, асуулга) захиалга өгч болно.
гэж(сонго "Ремарк, Эрих, Мария, Родригес" "Фернандес, Перес, Владимир, Кастулович" union dual all-аас сонгоно "Жозу, Гонзалес, де Леон" union dual all-аас сонгоно "Карам, Абу, Ил, Хатаб, Огли"хосоос) t-аас fio-г сонгох;

2) Автомат бөглөх: Оруулах/шинэчлэх гох + орос үсгийг галиглах функц
Эсвэл виртуал багана

mytransliterationfunction(гэр бүл)

p.s. Ихэнхдээ латин үсэг нь автоматаар үүсгэгдсэнтэй таарахгүй байж болно
жишээ нь дээр банкны картууд, тиймээс би автомат дүүргэлтээс гадна гарын авлагыг өгөх болно

Асуулт: Өгөгдөл оруулахдаа танигч баганыг буруу бөглөсөн


Сайхан өдөр. Шалтгаан нь юу байж болохыг хэн мэдэхийг надад хэлээрэй.
Би SQL серверээс SQL Manager 2008 ашигладаг.
Би бүтээдэг шинэ ширээтодорхойлогч баганатай, анхны утгыг зааж өгсөн - 1, өсөлт - 1.
Дараа нь би үүнд дараах хүсэлтээр өгөгдөл бичнэ.

Peny руу оруулна. пени (id_customer, period_calc) утгууд (@id_customer, @period_calc)

Энэ тохиолдолд ямар нэг шалтгааны улмаас танигч баганыг нэгээс биш, харин = Хүснэгт дэх хамгийн их танигч утга + оруулсан мөрийн тоо +1-тэй тэнцүү утгаас бөглөнө.

Хүснэгтийн дэлгэцийн агшинг хавсаргав. Энэ тохиолдолд эхлээд 2 бичлэг, дараа нь 5, дараа нь 2 бичлэг оруулсан.

Файлыг зурваст хавсаргав. Хэмжээ - 7Kb

Хариулт:Тодорхой ойлгосон. Баярлалаа.)